StackOverflow上有类似的问题,我知道。
相信我,我已经尝试了所有解决方案都无济于事。
我一直试图将这个json数据从angularjs发布到laravel控制器方法:
[
{
"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",
}
]
这是将此json数据发布到laravel控制器的代码:
$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 :(得分:1)
您需要确保在回复时返回变量。要从Laravel中的控制器函数返回JSON,这是the docs中列出的正确语法:
return response()->json([
'name' => 'Abigail',
'state' => 'CA'
]);
假设您希望返回角色查询的结果,您可以执行以下操作。如果您愿意,也可以指定状态代码。
return response()->json(['role' => $role], 200);
编辑:如果您只想从原始请求中返回数据,则可以改为使用JSON响应的内容:
return response()->json($request->all(), 200);
答案 1 :(得分: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"
}
]