2017-01-18 12 views
1

ルートコントローラにAJAXを介してデータを渡すためにしようと不一致のトークンエラー:私は取得に一定しています。このためLaravel、

data = { 
    id: postID, 
    title: $('[data-post-id='+postID+']').find('.blog_input').val(), 
    content: 'testing testing' 
}; 

$.post('/update', data, function(result){ 
    console.log(result); 
}); 

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

コントローラー:

public function update(Request $request) { 
    $content = $request; 

    return response($content); 
} 

AJAXをのエラー:

TokenMismatchException in VerifyCsrfToken.php line 68: 
in VerifyCsrfToken.php line 68 
at VerifyCsrfToken->handle(object(Request), object(Closure)) in Pipeline.php line 137 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in ShareErrorsFromSession.php line 49 
at ShareErrorsFromSession->handle(object(Request), object(Closure)) in Pipeline.php line 137 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in StartSession.php line 64 
at StartSession->handle(object(Request), object(Closure)) in Pipeline.php line 137 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37 
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) in Pipeline.php line 137 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in EncryptCookies.php line 59 
at EncryptCookies->handle(object(Request), object(Closure)) in Pipeline.php line 137 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 104 
at Pipeline->then(object(Closure)) in Router.php line 655 
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 629 
at Router->dispatchToRoute(object(Request)) in Router.php line 607 
at Router->dispatch(object(Request)) in Kernel.php line 268 
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request)) in Pipeline.php line 53 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 46.... 

titleの入力値はスタンドアロン入力からですが、問題がある可能性がある場合は<form>の中には入っていません。 CSRFトークンの不一致をどのように受け入れるか、まっすぐに整理するのですか?

答えて

2

要求にCSRFトークンを送信していることを確認してください。

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

<meta name="_token" content="{{ csrf_token() }}"> 

また、このミドルウェアをオフにすることはできますが、実際にはアドバイスしていません。 https://laravel.com/docs/5.3/csrf#csrf-introduction

-1

あなたはdataでこれを追加する必要があります:ドキュメントを参照してください

data = { 
    _token: $('meta[name="csrf-token"]').attr('content'), 
    id: postID, 
    title: $('[data-post-id='+postID+']').find('.blog_input').val(), 
    content: 'testing testing' 
}; 
+0

これを試して、それは動作しなかったと私に同じエラーを与えた。 –

+0

それはいつも私のために働く。再確認してください。 – Buglinjo

+0

私は、働いていない:( –

0

これは@Buglinjoとポールの答え@両方を使用して、私のために働いていたものです隠し入力を追加する

<input type="hidden" name="csrf" id="csrf" value="{{ csrf_token() }}"> 

JAXによって

$('#csrf').val() 
+0

私は@パウルの答えをお勧めします。すべてのajax呼び出しのために手動で追加するのではなく、デフォルトです。 –

0

私はそれを使用するソリューション:

data = { 
    _token: '{{ csrf_token() }}', //this one 
    id: postID, 
    title: $('[data-post-id='+postID+']').find('.blog_input').val(), 
    content: 'testing testing' 
};