首页 > 解决方案 > Ajax 帖子说未定义 laravel 6

问题描述

一旦有一些更改,我正在尝试使用 AJAX 更新我的数据库,但我似乎错过了一些东西。

我的控制器:

    // Update dates
public function updateDates(Request $request)
{
    // dd($input);
    $event = new Event();
    $event->invoice = $request->input('invoice');
    $event->paid = $request->input('paid');
    $event->save();

    return response()->json(['success'=>'Got Simple Ajax Request.']);
}

路线:

    //Events
Route::resource('event', 'EventController');
Route::post('/updateDates', ['as' => 'updateDates', 'uses' => 'EventController@updateDates']);

查询:

 $('.datepickerstart').datepicker({
        autoclose: true,
        todayHighlight: true,
        format: 'yyyy-mm-dd'
    }).on('changeDate', function(e) {
        e.preventDefault();

        var update_id = $(this).data('evid');
        var invoice = $("input[name=invoice_date]").val();
        var payment = $("input[name=payment_date]").val();

        console.log(update_id, invoice, payment);

        $.ajax({
           method:'post',
           url:'{{ route("updateDates") }}',
           dataType:'JSON',
           data: { 
                id : update_id,
                invoice : invoice,
                paid : payment 
            },
           success: function(data) {
                    alert(data.success);

            }
        });        
});

我在 ajax 发布之前控制台记录正确的数据。我的控制器中甚至无法 dd() 请求,我做错了什么?

控制台错误:

VM4649:1 POST http://localhost:8000/updateDates 500(内部服务器错误)

我越来越“未定义”。

更新:查看日志后已解决。我正在创建新对象而不是更新它们并得到错误:没有默认字段值

标签: javascriptajaxlaravelpost

解决方案


在您的数据帖子中添加 csrf 字段,如下所示:

data: { 
   id : update_id,
   invoice : invoice,
   paid : payment,
   _token: '{{csrf_token()}}' 
},

推荐阅读