获取404找不到POST ajax请求错误Laravel 5.2

时间:2016-09-11 08:10:27

标签: php ajax post laravel-5 http-status-code-404

我正在将laravel 4应用升级为laravel 5.2,我需要在代码中重新考虑很多事情。其中之一是CSRF AJAX次请求。我无法弄清楚如何在我的路线文件中正确处理它。 当然,我在我的视图中包含了csrf的元数据:

<meta name="csrf-token" content="{{ csrf_token() }}" />

我的路线档案:

Route::post('/edituser', 'UsersController@toEditUser');

我的剧本:

var _token = $('meta[name="csrf-token"]').attr('content');

function triggerEditUser(id){
    $.post(_token+'/edituser',{id:id},function(data){
        if(data){
            console.log(data);
        }
    });
}

我的控制员:

public function toEditUser(){
        if(Request::ajax()){
            $user = User::find(Input::get('id'));
            return Response::json($user);
        }
    }

我收到错误消息:

http://mysite.local/kg9VLUc0QWP59AqSP0OCPWjwsWPg33ypZ47FecRC/edituser 404 (Not Found)

3 个答案:

答案 0 :(得分:0)

可能是你的解决方案就像是

$.post( '/edituser',{id:id, token:_token},function(data){

取代

$.post(_token+'/edituser',{id:id},function(data){

答案 1 :(得分:0)

根据Laravel documentation,您应该使用标头发送 csrf 令牌。

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

$.post('/edituser',{id:id,_token:_token},function(data){
        if(data){
            console.log(data);
        }
    });

或者,您也可以将令牌作为数据发送

答案 2 :(得分:0)

只是为了测试并告诉我答案。  在您的控制器中更改

public function toEditUser(){
        if(Request::ajax()){
            $user = User::find(Input::get('id'));
            return Response::json($user);
        }
    }

通过

public function toEditUser(){
        if(Request::ajax()){
            $user = User::find(Input::get('id'));

        foreach ($user as $u) {
            $users[]=$result->yourcolumn;
        }

           return $users;
        }
    }

并添加

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