jquery Laravel错误:路由addproduct不支持GET方法,支持的方法:POST

q5lcpyga  于 11个月前  发布在  jQuery
关注(0)|答案(3)|浏览(157)

我是一个初学者在laravel.我有问题尝试张贴到路由.我不使用任何形式(形式行动="”方法=“POST”).我认为问题可能是在我的控制器.
这是我的按钮:

<div class="button0">
  <button
    type="button"
    class="btn btn-primary"
    style="margin:20px 150px 0 0; float: right; width:100px" 
    id="btnInsert"
  >
    Insert
  </button>
</div>

字符串
以下是我的剧本:

$("#btnInsert").click(function () {
  var productid = $("#productid").val();
  var productname = $("#productname").val();
  var productprice = $("#productprice").val();
  var productdes = $("#productdes").val();
  var productimage = $("#productimage").val();
  var productcate = $("#cate").val();

  if (productid == "") {
    alert("Empty Product ID");
  } else {
    // it doesn't work after this

    $.post("/addproduct", {
      productid: productid,
      productname: productname,
      productprice: productprice,
      productdes: productdes,
      productimage: productimage,
      productcate: productcate,
    }),
      function (result) {
        if (result == 1) {
          alert("Record has been added");
          window.location.href = "/product";
        }
      };
  }
});


这是我的路线:

Route::post('/addproduct',[ProductController::class, 'AddProduct']);


这是我的控制器,这里可能有些错误。

public function AddProduct(Request $request){
        try{
            $productid = $request->productid ;
            $productname = $request->productname;
            $productprice = $request->productprice;
            $productdes = $request->productdes;
            $productimage = $request->productimage;
            $categoryid = $request->categoryid; 
            $result = DB::table('tblproduct')->insert(['ProductID'=>$productid, 
            'ProductName'=>$productname, 
            'ProductPrice'=>$productprice, 
            'ProductDes'=>$productdes, 
            'ProductImage'=>$productimage, 
            'CategoryID'=>$categoryid]);
            if ($result) {
            return redirect()->route('product.InsertProduct');
            } else {
            echo "Insert failed: " . DB::getErrorMessage();
            }
        }
        catch (Exception $ex){
        echo ($ex);
        }
    }

mgdq6dx1

mgdq6dx11#

首先点击这些工匠命令:

php artisan route:clear
php artisan route:cache

字符串
或者您可以使用

php artisan optimize:clear
php artisan optimize


然后在api.php文件中修改你的url:coz apis,

$.post("api/addproduct", {


希望,它会帮助你

qzlgjiam

qzlgjiam2#

你的方法也很好,但正如你所说,你是初学者,所以我建议你必须阅读laravel文档并练习MVC方法。

始终使用路由,并确保每条路由都有不同或唯一的名称,或者您可以创建一组路由
路线

Add Controller in web.php | api.php on top.

use App\Http\Controllers\ProductController;

Route::post('/addproduct', [ProductController::class, 'AddProduct'])->name('add.product');

字符串

团体路线

Route::controller(ProductController::class)->group(function () {
    Route::post('/addproduct','AddProduct')->name('add.product');
    Route::get('/listproduct','ListProduct')->name('list.product');
});

<form action="{{ route('add.product') }}" method="post" enctype="multipart/form-data"
                                autocomplete="off">
                                @csrf
                                <div class="row">
                                    
                                    <div class="col-sm-12">
                                        <div class="row" style="margin-top: 15px;">
                                            <div class="col-sm-12">
                                                <div class="row">
                                                    <div class="col-sm-6">
                                                        <label for="horizontal-main-course-input"
                                                            class="col-sm-5 col-form-label">Name</label>
                                                        <div class="col-sm-12">
                                                            <input type="text" class="form-control" name="name"
                                                                id="name" placeholder="Enter Name Here">

                                                            @if ($errors->has('name'))
                                                                <span
                                                                    class="text-danger">{{ $errors->first('name') }}</span>
                                                            @endif
                                                        </div>
                                                    </div>
                                                    <div class="col-sm-6">
                                                        <label for="horizontal-main-course-input"
                                                            class="col-sm-5 col-form-label">Email</label>
                                                        <div class="col-sm-12">
                                                            <input type="text" class="form-control" name="price"
                                                                id="price"
                                                                placeholder="Enter Price Here">

                                                            @if ($errors->has('price'))
                                                                <span
                                                                    class="text-danger">{{ $errors->first('price') }}</span>
                                                            @endif
                                                        </div>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                                <br />
                                <div class="row">
                                    <div class="col-sm-12">
                                        <div class="col-sm-12" style="text-align: center;">
                                            <button type="submit" class="btn btn-primary w-md">SAVE</button>
                                        </div>
                                    </div>
                                </div>
                            </form>

创建控制器:

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Product;

class ProductController extends Controller
{
    public function index()
    {
        // Logic to display a list of products
    }

    public function create()
    {
        // Return a view for creating a new product
        return view('products.create');
    }

    public function store(Request $request)
    {
        // Validate and store the product
        $product = new Product();
        // Assign values from $request to $product properties
        $product->productid = $request->input('productid');
        $product->productname = $request->input('productname');
        // ... other properties
        $product->save();

        // Redirect to the products index page or do something else
        return redirect()->route('products.index');
    }
}


创建模型Product和迁移连接或保存表中的数据。我希望这将帮助你,或者你可以问任何你想要的。快乐编码!

g0czyy6m

g0czyy6m3#

你的Laravel代码很好,但你的JS代码有问题。
你忘记在post请求后使用done回调函数。

$.post("/addproduct", {
productid: productid,
productname: productname,
productprice: productprice,
productdes: productdes,
productimage: productimage,
productcate: productcate,
}).done(function (result) {
  if (result == 1) {
    alert("Record has been added");
    window.location.href = "/product";
  }
});

字符串
希望它能帮助你

相关问题