Php 用于路由的Laravel AJAX 404
我正在研究Laravel 5.3解决方案。我试图从我的一个视图通过AJAX调用POST路由来更新一组类别,但每次调用路由时都会出现404错误 有趣的事实:在开发过程中,我能够用下面显示的JS代码成功地调用路由——但是由于我对控制器代码本身做了一些更新,它抛出了404,但没有异常 以下是我的控制器操作:Php 用于路由的Laravel AJAX 404,php,jquery,ajax,laravel,laravel-5,Php,Jquery,Ajax,Laravel,Laravel 5,我正在研究Laravel 5.3解决方案。我试图从我的一个视图通过AJAX调用POST路由来更新一组类别,但每次调用路由时都会出现404错误 有趣的事实:在开发过程中,我能够用下面显示的JS代码成功地调用路由——但是由于我对控制器代码本身做了一些更新,它抛出了404,但没有异常 以下是我的控制器操作: public function updateTree( Request $request ) { $data = $request->json()->all(); $
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模块
非常感谢您的任何意见
干杯,
Jules如果您的ajax url中存在开首和结尾引号问题,请这样使用
$.ajax({
url: '{{ action("BlogCategoryController@updateTree") }}',
type: "POST",
data: JSON.stringify(list.nestable('serialize'))
});
您是否为该控制器设置了任何中间件?@Matit nope,只是路由组上用于安全检查的中间件:路由::组(['middleware'=>['web','role:user | admin']],函数(){…}CSRF令牌也已设置。当您尝试使用例如PostMan发出相同的请求时,您是否得到404?我刚刚尝试了@matiit,PostMan给了我一个304,这意味着路由被正确调用。如果我添加了有效负载(JSON),不抱歉@matiit对于请求,它也给了我一个404。Hi Raushan,我仔细检查了一下,但这并没有造成问题。在调用路由时仍然得到404。感谢您的输入-可能还有其他想法吗?您为什么不在ajax url值中提供完整的url作为
url:“/service/blog/categories/updatetree”
Hey Raushan,我试图重新设置使用静态url调用my action(),但仍然存在相同的问题。action()在编译时会将整个url(包括协议和主机名)打印到视图中。上面的代码只显示了我的刀片视图。