【问题标题】:Laravel AJAX 404 for route用于路由的 Laravel AJAX 404
【发布时间】:2017-11-27 02:37:50
【问题描述】:

我正在研究 Laravel 5.3 解决方案。我尝试从我的一个视图通过 AJAX 调用 POST 路由以更新一组类别,但每次调用路由时都会收到 404 错误。

有趣的事实:在开发过程中,我能够使用下面显示的 JS 代码成功调用路由 - 但由于我对控制器代码本身进行了一些更新,它会抛出 404 但没有异常。

这是我的控制器操作:

public function updateTree( Request $request )
{
    $data = $request->json()->all();

    $result = BlogCategory::rebuildTree($data, false);

    if($result > 0) {
        return Response::HTTP_OK;
    }
    return Response::HTTP_NOT_MODIFIED;
}

这里是 JS AJAX 调用:

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});

var updateTree = function (e) {
    var list = e.length ? e : $(e.target), output = list.data('output');

    console.log(JSON.stringify(list.nestable('serialize')));

    $.ajax({
        url: '{{ action('BlogCategoryController@updateTree') }}',
        type: "POST",
        data: JSON.stringify(list.nestable('serialize'))
    });
};

$(document).ready(function() {
    $('#nestable2').nestable({
        group: 1
    }).on('change', updateTree);
});

控制器路由绑定在web.php中

Route::post( '/service/blog/categories/updatetree', 'BlogCategoryController@updateTree' );

如你所见,我在这里使用 LazyChaser 的 Laravel NestedSet 模块 (https://github.com/lazychaser/laravel-nestedset)。

非常感谢任何意见。

干杯, 朱尔斯

【问题讨论】:

  • 你有没有为此控制器设置任何中间件?
  • @matiit 不,只是路由组上用于安全检查的中间件:Route::group(['middleware' => ['web', 'role:user|admin']], function () {...} CSRF 令牌也已设置
  • 当您尝试使用 PostMan 发出相同的请求时,您会得到 404 吗?
  • 我刚试过@matiit,邮递员给了我一个 304,这意味着路线被正确调用。
  • 不抱歉@matiit,如果我将有效负载(JSON)添加到请求中,它也会给我一个 404

标签: php jquery ajax laravel laravel-5


【解决方案1】:

您的 ajax 网址中存在开引号和右引号问题,请像这样使用

$.ajax({
    url: '{{ action("BlogCategoryController@updateTree") }}',
    type: "POST",
    data: JSON.stringify(list.nestable('serialize'))
});

【讨论】:

  • 嗨 Raushan,我仔细检查了,但这不会导致问题。调用路由时仍然收到 404。感谢您的意见 - 可能还有其他想法吗?
  • 你为什么不在你的 ajax url 值中提供完整的 url 作为 url:'/service/blog/categories/updatetree'
  • 嘿 Raushan,我尝试用静态 url 替换我的 action() 调用,但仍然是同样的问题。 Action() 实际上会在编译时将包括协议和主机名在内的整个 url 打印到视图中。上面的代码只是显示了我的刀片视图。
猜你喜欢
  • 2016-08-27
  • 2020-11-10
  • 2021-04-12
  • 1970-01-01
  • 2017-12-05
  • 2016-01-09
  • 2014-10-11
  • 2018-01-15
  • 2012-12-19
相关资源
最近更新 更多