【问题标题】:Using Ajax to implement controller method which is passed an ID使用 Ajax 实现传递 ID 的控制器方法
【发布时间】:2017-06-29 05:11:18
【问题描述】:

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

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 工作?谢谢

【问题讨论】:

    标签: ajax laravel laravel-5


    【解决方案1】:

    试试这个 例如,在隐藏输入中添加 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(不允许的方法)”错误。由于这是一个补丁请求,我认为“类型”需要是“补丁”,所以我试过了,它返回一个“500(内部服务器错误)”。有什么想法吗?
    • 可能是 crsf,google 它总是与 ajax 请求一起发生(评论 app/http/kernel.php 中的 crsfmiddlware 以查看它是否存在问题)
    猜你喜欢
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 2023-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多