2016-09-11 14 views
1

laravel 4アプリをlaravel 5.2にアップグレードしています。私のコードで再考する必要があるものがたくさんあります。そのうちの1つは、AJAXリクエストのCSRFのものです。ルートファイルで適切に処理する方法を理解できません。POSTアヤックスリクエストで404エラーが見つかりませんLaravel 5.2

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

私のroutesファイル:

Route::post('/edituser', '[email protected]'); 

私のスクリプト:

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); 
     } 
    } 
もちろん は、私は私の見解でCSRFのメタが含まれてい

私はgeですエラーメッセージめの設定:

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

を追加し、あなたのURLパスで必ず '' 'kg9VLUc0QWP59AqSP0OCPWjwsWPg33ypZ47FecRC'''です?? –

+0

私はあなたがヘッダーまたはデータとして – jaysingkar

答えて

0

はLaravel documentation与え、あなたが送信するために、ヘッダーを使用する必要があるとして、あなたのソリューションが

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

の代わりに

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

ようなものになるだろうかもしれませ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); 
     } 
    }); 

、あなたはまた、単にテストし、私の答えを伝えるために、データ

+0

のcsrfトークンを渡すべきだと思います。このコード –

+0

okでまだhttp://mysite.local/edituser 500(内部サーバーエラー)のPOSTを受け取りました。開発者ツールのxhrをチェックして、どのようなレスポンスを確認することができますか? – jaysingkar

0

としてトークンを送信することができます。

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

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

      return $users; 
     } 
    } 

によってあなたのコントローラの変更で

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

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