Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 用于路由的Laravel AJAX 404_Php_Jquery_Ajax_Laravel_Laravel 5 - Fatal编程技术网

Php 用于路由的Laravel AJAX 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(); $

我正在研究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模块

非常感谢您的任何意见

干杯,
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(包括协议和主机名)打印到视图中。上面的代码只显示了我的刀片视图。