使用单个AJAX调用如何获取多个对象作为回调数据

时间:2016-11-09 11:51:54

标签: arrays json ajax object symfony

我在服务器端向控制器发送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);

仅发送一个对象现在存在问题。 有人可以向我解释它应该如何完成吗?

2 个答案:

答案 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 - 您不需要再次转换它。另一件事是你可能忽略了stringifyarray / object转换为string。也就是说,你做不到:"some_string"[1].description - 这没有意义。最有可能的是,您希望使用JSON.parse()来电。

前段时间我遇到过类似的问题,我的代码从$.parseJSON()执行了jQuery

尝试console.log(data);。它应该已经是两个元素的数组(由于来自application/json的{​​{1}} mime类型)。

此外,非常重要的是,除非您想要被黑客攻击,否则不要返回普通数组永远。记录在案JsonResponse attack vector