2016-11-09 10 views
0

Ich habe Ajax Post-Methode auf der Steuerung von der Server-Seite, in Entitäten suchen. Ich habe ein bisschen Ärger mit dieser Sache, weil ich tatsächlich mehrere Objekte senden kann, aber ich habe keine Ahnung, wie man sie analysiert.Mit einzelnen AJAX-Aufruf, wie mehrere Objekte als Rückrufdaten zurück

$serializer = $this->container->get('serializer'); 
    $reports = $serializer->serialize($cables, 'json'); 
    $reports1 = $serializer->serialize($contacts, 'json'); 
    return new JsonResponse (array($reports1, $reports)); 

Dies ist, wie ich mehrere Objekte senden: und wie ich versuche, sie zu lesen:

function (data) 
{ var obj = JSON.parse(data); 
    console.log(obj); 
    $('#resposeText').val(obj[1].description); } 

Im Grunde bin ich, zwei Arrays empfangen, oder ich weiß nicht, zum Teufel, was ich empfange, aber es funktioniert nicht.

Auch den berühmten Fehler bekommen:

Uncaught SyntaxError: Unexpected token , in JSON at position 1306

return new JsonResponse ($reports); 

Senden nur ein Objekt gibt es jetzt Probleme. Kann mir jemand erklären, wie es gemacht werden soll?

+0

Bitte formatieren Sie Ihren Code richtig. –

+0

[dies könnte helfen] (http://stackoverflow.com/questions/29489243/trigger-a-javascript-function-beforeon-on-any-ajax-call) Sie – Vikrant

Antwort

0

Wenn ich mich nicht irre, ist Ihr data bereits JSArray - Sie müssen es nicht noch einmal konvertieren. Eine andere Sache ist, dass Sie wahrscheinlich übersehen, dass stringify konvertiert array/object zu string. Das heißt, Sie können nicht tun: "some_string"[1].description - das macht einfach keinen Sinn. Höchstwahrscheinlich wollten Sie JSON.parse() anrufen.

Ich hatte vor einiger Zeit ein ähnliches Problem, wo mein Code die $.parseJSON() von jQuery tat.

Versuchen Sie, console.log(data); zu tun. Es sollte bereits Array von zwei Elementen sein (wegen application/json MIME-Typ von JsonResponse).

Auch sehr wichtig, geben Sie keine einfachen Arrays jemals zurück, es sei denn, Sie wollen gehackt werden. Es gibt eine dokumentierte CSRFattack vector

+0

yep, Sie sind total richtig, es muss sein " parse ", aber in der Tat ist das Problem, dass ich zwei verschiedene Objekte senden möchte, die einzige Möglichkeit, dass ich komme, ist, sie in einem JsonResponce (Array ($ data1, $ data2)) zu senden; das konvertiert sie wieder in Array und ich empfange den oben genannten Fehler. –

+0

Haben Sie versucht, den 'Parse'-Teil zu entfernen und nur die' Daten' zu drucken? –

+0

Ahhh ich sehe was du meinst .... entschuldige mich für Missverständnis ... –

1

Ich habe es geschafft, es zu beantworten!

Ok, das Problem war jedoch sehr einfach um ehrlich zu sein.

zunächst die beiden Objekt muss in Array gesendet werden, wie ich in der Steuerung hat, aber der Trick ist, in Jquery,

function (data) 
        { 
         obj1 = data[0]; 
         obj2 = data[1]; 

          var obj = JSON.parse(obj2); 
          var obj1 = JSON.parse(obj1); 

         console.log(obj[1].description); } 

Das heißt, wie das Objekt ca analysiert werden .... Hoffe, dass dies helfen wird, Wie Zukunft: D

Verwandte Themen