我正在使用Laravel 5.3,但无法将对象数组提交给控制器。可能吗?如果没有,是否有解决方法,以便我可以一次提交多个对象?
示例请求:
let req = {
'data[]': [
{ id: 1, name: 'test1' },
{ id: 2, name: 'test2' }
]
};
然后,要测试,我只是返回了请求的内容:
public function testArray(Request $request) {
return response()->json($request->all());
}
并得到以下结果:
data: [
"[object Object]",
"[object Object]"
]
答案 0 :(得分:1)
在您的js中
let req = [
{ id: 1, name: 'test1' },
{ id: 2, name: 'test2' }
];
var baseurl = window.location.protocol + "//" + window.location.host;
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: baseurl + "/test-data",
type: 'post',
data:{
req:req
},
cache: false,
success: function(response) {
console.log(response);
}
});
在控制器中:
public function testArray(Request $request) {
$post = $request->all();
return response()->json($post);
}
在路由文件中:(web.php)
在这里我使用了DemoController,可以用您的控制器名称替换
Route::post('/test-data', 'DemoController@testArray');
结果:
req: (2) […]
0: Object { id: "1", name: "test1" }
1: Object { id: "2", name: "test2" }
length: 2
答案 1 :(得分:0)
在您的情况下,result是一个对象数组,result [0]是第一个对象。例如,要访问ID,可以使用result [0] ['id']。 例如,您可以使用for循环查看实际数据。
我还认为你可以使用json_encode。
希望有帮助!
答案 2 :(得分:0)
return
在显示对象/数组时经常遇到问题。
简单尝试:
dd($request->all())
您会感到惊讶,而不是return
: