2016-11-09 65 views
0

我有ajax post方法由服務器端控制器,在實體中搜索。我對這個東西有點麻煩,因爲我實際上可以發送多個對象,但我不知道如何解析它們。單個AJAX調用如何找回多個對象作爲回調數據

$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); } 

基本上我」,接收兩個陣列,或者我沒有什麼是地獄我正在接受,但它不起作用。

也越來越著名的錯誤:

Uncaught SyntaxError: Unexpected token , in JSON at position 1306

return new JsonResponse ($reports); 

發送對象只有一個,現在有問題。 有人可以向我解釋它應該怎麼做?

+0

請正確格式化您的代碼。 – 2016-11-09 11:59:56

+0

[這可能有助於](http://stackoverflow.com/questions/29489243/trigger-a-javascript-function-before-on-any-ajax-call)你 – Vikrant

回答

0

如果我沒有弄錯,你的data已經JSArray - 你不需要再轉換一次。另一件事是,你可能忽略的是,stringify轉換array/objectstring。這就是說,你不能這樣做:"some_string"[1].description - 這是沒有道理的。最有可能的是,你想使用JSON.parse()電話。

前段時間我有類似的問題,我的代碼從jQuery做了$.parseJSON()

試試做console.log(data);。它應該已經是兩個元素的數組(由於application/json mime類型從JsonResponse)。

另外,非常重要的是,除非你想被黑客攻擊,否則不要返回普通的數組。有記錄CSRFattack vector

+0

是的,你是完全正確的,它必須是「解析「,但實際上問題是我想發送兩個不同的對象,我唯一的出路是發送他們在JsonResponce(數組($ data1,$ data2));這將再次將它們轉換爲數組,並收到上面提到的錯誤。 –

+0

您是否嘗試刪除'parse'部分並僅打印'data'? –

+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); } 

即對象CA如何解析....希望這將有助於未來如何:D