2017-01-11 8 views
1

StackOverflowにこのような質問があります。laravelコントローラにjsonデータを取得する方法

私を信頼して、私はすべてのソリューションを無駄にしようとしました。私はlaravelコントローラメソッドにangularjsから、このJSONデータを投稿しようとしている

:これはコードが

[ 
    { 
    "id": 2, 
    "name": "add-user", 
    "display_name": "Add new user", 
    "description": "Create a new worker", 
    }, 
    { 
    "id": 4, 
    "name": "add-role", 
    "display_name": "Add role", 
    "description": "Add user role", 
    } 
] 

そのlaravelコントローラに投稿このJSONデータを:今

$http({ 
    method: 'POST', 
    url: '/api/roles/assignPermissions/' + name, 
    headers: { 'Content-Type' : 'application/json' }, 
    data: $.param(role_perms) 
}).success(function(data){ 
    console.log(data); 
}); 

このコントローラーメソッドでは、このjsonデータを取得して戻し、コンソールに表示してコントローラーで受信したことを確認します。

以下は、このjsonデータを取得して返すために行ったコントローラとすべての試みです。

コントローラ:

public function massAssignPerms(Request $request, $roleName) 
{ 
    $role = Role::where('name', $roleName)->first(); 


    // this returned nothing 
    return json_decode(file_get_contents('php://input'),true); 

    // this returned: add-user=&add-role= 
    return file_get_contents('php://input'); 

    // returned nothing 
    return json_decode($request->getContent(), true); 

    // returned empty array [] 
    return $request->json()->all(); 
} 

私は私のコードで間違っているものを見つけることができません。それとも、私が間違ってやっている可能性がありますか?

ご協力いただきますようお願い申し上げます。

+0

どのバージョンのlaravelをお使いですか? – jackel414

+0

'dd($ request);の結果を表示してください。 –

+0

@ jackel414私はlaravel 5.3を使用しています。 –

答えて

1

あなたの応答とともに変数が返されていることを確認する必要があります。 the docsにレイアウトされてLaravelのコントローラ機能からJSONを返すには、これは正しい構文です:

return response()->json([ 
    'name' => 'Abigail', 
    'state' => 'CA' 
]); 

はあなたの役割クエリの結果を戻したいと仮定すると、次の操作を行うことができます。必要に応じてステータスコードを指定することもできます。

return response()->json(['role' => $role], 200); 

EDIT:あなたは、単に元の要求からのデータを戻したい場合は、代わりにJSON応答の内容ことを確認することができます

return response()->json($request->all(), 200); 
+0

あなたの答えをありがとう。しかし、あなたが書いたものは、すでにコントローラーに存在するjsonからの応答を返すでしょう。私が返そうとしているのは、コントローラに渡される$リクエストのjsonです。 –

+0

コントローラメソッドの先頭に 'dd($ request-> all());'を実行するとどうなりますか? – jackel414

0

あなたが示したデータは何であるか実際にある場合私はあなたがハードコードされた値でテストしていると推測していますか?それは適切なJSON(各オブジェクトの最後のキーの後に余分なカンマ)ではありません。
お試しください:

[ 
    { 
    "id": 2, 
    "name": "add-user", 
    "display_name": "Add new user", 
    "description": "Create a new worker" 
    }, 
    { 
    "id": 4, 
    "name": "add-role", 
    "display_name": "Add role", 
    "description": "Add user role" 
    } 
] 
関連する問題