2016-08-08 25 views
1

ajaxからコントローラにデータを取得しようとしていますが、Ajaxがデータを渡していないようです。トークンのためのLaravel - ajaxからコントローラにデータを取得できない

メタ:

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

Javascriptを:

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

// AJAX Call 

$.ajax({ 
    method: "POST", 
    url: "someurl", 
    data: JSON.stringify({'sample': 'test'}), 
    dataType: "json", 
    contentType: "application/json", 
    success: function(data) { 
     console.log(data); 
    }, 
    error: function(err) { 
     console.log(err); 
    } 
}); 

ルート:

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

コントローラ:

public function updateUser() { 

    $myTest = Input::all(); 

    return response()->json(json_encode($myTest)); 
} 

私は問題なく、コントローラを呼び出すことができますが、私はInput:all()を追加するとき、私は500 server errorを取得します。ありがとう!

+0

ajaxsetupとCSRFフィールドを離れたままにあなたはそれをしたいと思う500のエラーを見ます。 – SteD

+0

echo $ myTestまたはprint_r $ myTestが値を持っているかどうかを確認しますか? –

答えて

0

私が間違っている場合は訂正してください。しかし、私が知る限り、Input :: all()はLaravel Requestsによって動作します。あなたはリクエストをハンドリングするのではなく、純粋な生のPOSTデータであるので、Input :: all()は機能しません。 $myTest = $_POST['sample']でアクセスし、それが機能するかどうか確認してください。ああ、あなたはブレードテンプレートエンジンを使用している場合は、あなたの便宜のために、私は次のために行くだろう:

$.ajax({ 
    method: "POST", 
    url: "someurl", 

    data: { 
     'sample': 'test', 
     '_token' : '{{csrf_token()}}' 
    }, 

    dataType: "json", 
    contentType: "application/json", 
    success: function(data) { 
    console.log(data); 
}, 
    error: function(err) { 
    console.log(err); 
} 
}); 

とする場合、通常は、より多くの詳細については、サーバーのログを確認し

関連する問題