【发布时间】: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