使用Ajax实现传递ID的控制器方法

使用Ajax实现传递ID的控制器方法,ajax,laravel,laravel-5,Ajax,Laravel,Laravel 5,我有一个按钮,可以在DB表中切换布尔值。它可以工作,但每次都会重新加载页面,所以我想使用AJAX切换它。我不确定如何执行AJAX post请求,以便为控制器提供所需的ID。这就是我到目前为止所做的: TaskController方法: public function updateCompleted($id) { $task = Task::findOrFail($id); if($task->completed) { $task->comp

我有一个按钮,可以在DB表中切换布尔值。它可以工作,但每次都会重新加载页面,所以我想使用AJAX切换它。我不确定如何执行AJAX post请求,以便为控制器提供所需的ID。这就是我到目前为止所做的:

TaskController方法:

    public function updateCompleted($id)
{

    $task = Task::findOrFail($id);

    if($task->completed) {
        $task->completed = false;
    } else {
        $task->completed = true;
    }

    $task->save();

    Session::flash('message', 'Task updated!');
    return redirect('tasks');
}
用于切换的按钮(在本例中,是ID为1的第一个任务):

路线:

Route::patch('tasks/complete/{id}', 'TaskController@updateCompleted');
如何让Ajax工作?谢谢你试试这个 例如,在id为“myid”的隐藏输入中添加id

  $('.ajaxSubmit').click(function(e) {
   var data = $("#myid").val();
e.preventDefault();
    $.ajax({
        url: '/tasks/complete',
        type: 'POST',
        data: data,
        success: function(response)
        {
            console.log("working");
        }
    });
   });
这样做

 Route::post('tasks/complete', 'TaskController@updateCompleted');

不要忘记CSRF。

我已经尝试过了,但现在收到了“405(不允许使用方法)”错误。由于这是一个补丁请求,我认为“type”应该是“patch”,所以我尝试了一下,它返回一个“500(内部服务器错误)”。有什么想法吗?很可能是crsf,谷歌总是会在ajax请求中使用它(在app/http/kernel.php中评论crsfmiddlware,看看它是否真的解决了这个问题)
  $('.ajaxSubmit').click(function(e) {
   var data = $("#myid").val();
e.preventDefault();
    $.ajax({
        url: '/tasks/complete',
        type: 'POST',
        data: data,
        success: function(response)
        {
            console.log("working");
        }
    });
   });
 Route::post('tasks/complete', 'TaskController@updateCompleted');