是否可以提交对象数组?

时间:2019-05-20 15:17:29

标签: laravel

我正在使用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]"
]

3 个答案:

答案 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