将一组JSON对象传递给laravel

时间:2014-06-09 14:45:18

标签: jquery json laravel

所以我有一个包含许多JSON对象的数组,如果我输出我的数组,这就是它在console.log中显示的内容:

{"data" :[{"line":"1","band":"X","val":"0"},{"line":"1","band":"A","val":"6461"},{"line":"1","band":"B","val":"6896"},{"line":"1","band":"C","val":"5826"},{"line":"1","band":"D","val":"3704"},{"line":"1","band":"E","val":"2141"},{"line":"1","band":"F","val":"1198"},{"line":"1","band":"G","val":"682"},{"line":"1","band":"H","val":"70"},{"line":"2","band":"X","val":"0"},{"line":"2","band":"A","val":"87"},{"line":"2","band":"B","val":"65"},{"line":"2","band":"C","val":"48"},{"line":"2","band":"D","val":"35"},{"line":"2","band":"E","val":"12"},{"line":"2","band":"F","val":"14"},{"line":"2","band":"G","val":"4"},{"line":"2","band":"H","val":"0"},{"line":"3","band":"X","val":"0"},{"line":"3","band":"A","val":"0"},{"line":"3","band":"B","val":"0"},{"line":"3","band":"C","val":"0"},{"line":"3","band":"D","val":"0"},{"line":"3","band":"E","val":"0"},{"line":"3","band":"F","val":"0"},{"line":"3","band":"G","val":"0"},{"line":"3","band":"H","val":"0"}]}

returnObj在上面输出。这就是我如何构建数组以回发到laravel

$('table tr td input').each(function()
{               
    Obj = 
    {           
        line : $(this).parent().attr('line'),
        band : $(this).parent().attr('band'),
        val : $(this).val()
    }

    returnObj.push(Obj);

});

returnObject =  '{"data" :' + JSON.stringify(returnObj) +'}';
console.log(returnObject);

这是我在页面上的ajax:

$.ajax({ 
type: "POST", 
url: "magic/whatif", 
data : returnObject
}) 
.done(function(response) 
{ 
    alert(response); 
});

我的路由或逻辑没有问题,我只是print_r或回显作为响应传入的数据,所以我可以看到laravel对它做了什么。

$data = Input::all(); 
print_r($data);

问题是laravel无法处理对象数组,所以它发送回来:

Array ( [undefined] => )

有许多解决方案,当你将一个JSON对象传递给laravel但我需要将包含许多JSON对象的数组传递给laravel时,我才能使用它。

1 个答案:

答案 0 :(得分:1)

更改以下行:

returnObject =  '{"data" :' + JSON.stringify(returnObj) +'}';

对此:

returnObject =  { returnObj : returnObj };

您可以使用以下方式访问该数据:

$data = Input::get('returnObj');

输出(转储和死亡):

dd($data);