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

时间:2017-02-10 18:36:57

标签: ajax laravel laravel-5

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

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的第一个任务):

{{ Form::open(array('action' => array('TaskController@updateCompleted', $task->id))) }}
    {{ Form::hidden('_method', 'PATCH') }}

    @if ($task->completed)
        {{ Form::button('<span class="glyphicon glyphicon-ok"></span>', array('class'=>'btn btn-danger', 'type'=>'submit')) }}
    @else
        {{ Form::button('<span class="glyphicon glyphicon-remove"></span>', array('class'=>'btn btn-danger ajaxSubmit', 'type'=>'submit')) }}
    @endif

{{ Form::close() }}

AJAX不起作用......

    $('.ajaxSubmit').click(function(e) {
    e.preventDefault();
        $.ajax({
            url: 'tasks/complete/{id}',
            type: 'POST',
            success: function(response)
            {
                console.log("working");
            }
        });
   });

路线:

Route::patch('tasks/complete/{id}', 'TaskController@updateCompleted');

如何让Ajax工作?感谢

1 个答案:

答案 0 :(得分:0)

试试这个 在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。