我在服务器端向控制器发送ajax post方法,在实体中搜索。我对这个东西有点麻烦,因为我实际上可以发送多个对象,但我不知道如何解析它们。
$serializer = $this->container->get('serializer');
$reports = $serializer->serialize($cables, 'json');
$reports1 = $serializer->serialize($contacts, 'json');
return new JsonResponse (array($reports1, $reports));
这是我发送多个对象的方式: 以及我如何阅读它们:
function (data)
{ var obj = JSON.parse(data);
console.log(obj);
$('#resposeText').val(obj[1].description); }
基本上我接收了两个阵列,或者我不知道我接受了什么,但它不起作用。
还得到了一个着名的错误:
未捕获的SyntaxError:意外的令牌,在位置1306的JSON中
return new JsonResponse ($reports);
仅发送一个对象现在存在问题。 有人可以向我解释它应该如何完成吗?
答案 0 :(得分:1)
我已经设法回答了它!
好吧,问题是说实话很简单。
首先,两个对象必须像在控制器中那样在数组中发送,但诀窍在于Jquery,
function (data)
{
obj1 = data[0];
obj2 = data[1];
var obj = JSON.parse(obj2);
var obj1 = JSON.parse(obj1);
console.log(obj[1].description); }
这就是解析对象的方式....希望这将有助于未来:D
答案 1 :(得分:0)
如果我没有记错,您的data
已经JS
Array
- 您不需要再次转换它。另一件事是你可能忽略了stringify
将array
/ object
转换为string
。也就是说,你做不到:"some_string"[1].description
- 这没有意义。最有可能的是,您希望使用JSON.parse()
来电。
前段时间我遇到过类似的问题,我的代码从$.parseJSON()
执行了jQuery
。
尝试console.log(data);
。它应该已经是两个元素的数组(由于来自application/json
的{{1}} mime类型)。
此外,非常重要的是,除非您想要被黑客攻击,否则不要返回普通数组永远。记录在案JsonResponse
attack vector