如何从 Ajax 请求将新产品添加到 dabase 中



我正在尝试通过 Ajax 请求从编辑表单插入新产品,我返回所有插入的值,但不是添加新产品,而是在列表中添加第一个产品。 我做错了什么?

这是我的 Ajax 请求:

$(document).on('change','.qty',function(){

    var id = $("#inv_id").val();
    var tr = $(this).closest('tr');
    var name = tr.find(".name").val(); 
    var price = tr.find(".price").val(); 
    var qty = tr.find(".qty").val(); 
    var total = tr.find(".total").val(); 
    $.ajax({
        type: "POST",
        url: '/product',
        data: {id: id, name: name, price: price, qty: qty, total: total, '_token':$('meta[name="csrf-token"]').attr('content')},
        success: function( data ) {
            console.log(data);
        },
            error: function(data){
            alert("fail");
            }
    });

});

这是我的控制器

public function product(Request $request){

        $prod = new Product;
        $prod->invoice_id = $request->id;
        $prod->name = $request->name;
        $prod->price = $request->price;
        $prod->qty = $request->qty;
        $prod->total = $request->total;
        $prod->save();

    return response()->json(['responseText' => 'Success!'], 200);


}

我试过使用产品::create([]); 但它也不起作用。 它添加了第一个产品的副本,返回的 ID 是来自发票 ID 的 ID。

出了什么问题?Ajax 响应数据或将值插入数据库?

在我看来,您的 ajax 调用不会返回有关您创建的产品的任何内容。

也许是这样的?

public function product(Request $request) {
    // ...
    return response()->json($prod->toArray(), 200);
}

最新更新