首页 > 解决方案 > 未捕获的类型错误:在 Laravel 项目中使用 AJAX 时无法将 undefined 或 null 转换为对象

问题描述

我正在尝试使用ajax使用 bumbummen99/shoppingcartbumbummen99/shoppingcart将产品数据发布到购物车

用于收集要发送到购物车的产品数据的按钮:

<button type="submit" class="btn btn-primary mb-2" **onClick="addToCart()"** >Add to Cart</button>

然后我将函数设为:

  function addToCart() {

    var product_name = $('#pname').text();
    var id = $('#product_id').val();

    var color = $('#color option:selected').text();
    var size = $('#size option:selected').text();
    var quantity = $('#qty').val(1);

    $.ajax({
        type: "POST",
        dataType: 'json',
        data:{
            color:color, size:size, quantity:quantity, product_name:product_name
        },

        **url: "/cart/data/store/"+id,**
        success:function(data){
            console.log(data)
        }
    })


}

然后我在上面的 ajax 中为所需的 url 做了一个路由:

Route::post('/cart/data/store/{id}', [CartController::class, 'AddToCart']);

控制器中用于将产品数据添加到购物车的功能:

 public function AddToCart(Request $request, $id){

    $product = Product::findOrFail($id);

    if ($product->discount_price == NULL) {
        Cart::add([
            'id' => $id,
            'name' => $request->product_name,
            'qty' => $request->quantity,
            'price' => $product->selling_price,
            'weight' => 1,
            'options' => [
                'image' => $product->product_thumbnail,
                'color' => $request->color,
                'size' => $request->size,
            ],
        ]);

        return response()->json(['success' => 'Successfully Added on Your Cart']);

    }else{

        Cart::add([
            'id' => $id,
            'name' => $request->product_name,
            'qty' => $request->quantity,
            'price' => $product->discount_price,
            'weight' => 1,
            'options' => [
                'image' => $product->product_thumbnail,
                'color' => $request->color,
                'size' => $request->size,
            ],
        ]);
        return response()->json(['success' => 'Successfully Added on Your Cart']);
    }

} // end method

错误显示为

Uncaught TypeError: Cannot convert undefined or null to object
    at entries (<anonymous>)
    at e (jquery-1.11.1.min.js:4)
    at Vc (jquery-1.11.1.min.js:4)
    at Vc (jquery-1.11.1.min.js:4)
    at Vc (jquery-1.11.1.min.js:4)
    at Vc (jquery-1.11.1.min.js:4)
    at Function.m.param (jquery-1.11.1.min.js:4)
    at Function.ajax (jquery-1.11.1.min.js:4)
    at addToCart ((index):6470)
    at HTMLButtonElement.onclick ((index):6356)
e @ jquery-1.11.1.min.js:4
Vc @ jquery-1.11.1.min.js:4
Vc @ jquery-1.11.1.min.js:4
Vc @ jquery-1.11.1.min.js:4
Vc @ jquery-1.11.1.min.js:4
m.param @ jquery-1.11.1.min.js:4
ajax @ jquery-1.11.1.min.js:4
addToCart @ (index):6470
onclick @ (index):6356

并且在检查网络时,单击“添加到购物车”按钮时没有显示任何内容

非常感谢您的帮助

标签: ajaxlaravel-8cart

解决方案


推荐阅读