2015-10-08 86 views
9

私はLaravel初心者です。私はPHP/jqueryアプリケーションをLaravelに変換しています。元のコードは次のように検索されたAjaxのPOSTとJSON配列を使用:

$json = file_get_contents('php://input'); 
$data = json_decode($json,true); 

私はずっとPOST側で同じことをやっているが、私はどのようなデータがでてくるが表示されない私Laravel $リクエストの収集特別な何かが、私はこのような構造JSONデータを取得するために必要なことがあります:ここで

[ 
    { "name": "John", "location": "Boston" }, 
    { "name": "Dave", "location": "Lancaster" } 
] 

は私のjQueryのAjaxのPOSTコードは(ハードコーディングされたデータを使用)である。ここ

$.ajax({ 
    type: "POST", 
    url: "/people", 
    data: '[{ "name": "John", "location": "Boston" }, { "name": "Dave", "location": "Lancaster" }]', 
    dataType: "json", 
    success:function(data) { 
     $('#save_message').html(data.message); 
    } 
}); 

は私のコードです

:POST

public function store(Request $request) 
{ 
    dd($request->all()); 
} 

を受け取るしかし、私が得るすべてはあるコントローラー

[]

私のデータをどのように取得することができますか?

答えて

11

あなたはdataTypecontentType

$.ajax({ 
    type: "POST", 
    url: "/people", 
    data: '[{ "name": "John", "location": "Boston" }, { "name": "Dave", "location": "Lancaster" }]', 
    contentType: "json", 
    processData: false, 
    success:function(data) { 
     $('#save_message').html(data.message); 
    } 
}); 

の変化にあなたのAjax呼び出しを変更してprocessDataオプションを追加する必要があります。お使いのコントローラ、使用からJSONペイロードを取得するために

:代わりに

dd($request->all()); 
+1

悲しいことに、私のLaravelコントローラにはまだデータがありません。しかし、ヘッダーが*​​ Form Data **から** Pay Payload **に変更されていることがわかります。 – Adam

+1

私は自分のレスポンスを更新しました。コントローラの入力方法も変更する必要があります。 –

+0

リクエストについて新しいことを学んだ –

10
$postbody=''; 
// Check for presence of a body in the request 
if (count($request->json()->all())) { 
    $postbody = $request->json()->all(); 
} 

dd(json_decode($request->getContent(), true)); 

これは、それが今laravel 5.2で行うの方法です。

関連する問題