JSON auf AJAX-Response-Callback erhalten

7

Ich versuche, ein kleines Ajax-Chat-System zu erstellen (nur für den Teufel) und ich benutze prototype.js, um den Ajax-Teil zu behandeln.

Eine Sache, die ich in der Hilfe gelesen habe, ist, dass, wenn Sie json-Daten zurückgeben, die Callback-Funktion diese json-Daten im zweiten Parameter füllen wird.

Also in meiner PHP-Datei, die aufgerufen wird, habe ich:

%Vor%

Auf der Ajax-Anfrage habe ich:

%Vor%

Die Warnung des response.responseText gibt mir {"lastid": 8}, aber der json gibt mir null.

Weiß jemand, wie ich das schaffen kann?

    
AntonioCS 17.05.2009, 22:17
quelle

4 Antworten

22

Dies ist die korrekte Syntax zum Abrufen von JSON mit Prototyp

%Vor%     
Jose Basilio 17.05.2009, 22:24
quelle
3

Es gibt eine Eigenschaft von Response: Response.responseJSON, die nur dann mit einem JSON-Objekt gefüllt wird, wenn das Backend Content-Type: application / json zurückgibt, d. h. wenn Sie in Ihrem Backend-Code so etwas tun:

%Vor%

in diesem Fall Response.responseJSON! = undefined, die Sie auf der Empfängerseite in Ihrem onSuccess (t) -Handler überprüfen können:

%Vor%

Ich beantworte nicht wirklich die Frage nach dem zweiten Parameter des Handlers, aber falls es existiert, wird Prototype dies nur im Falle des richtigen Inhaltstyps der Antwort liefern.

    
Yuri Makassiouk 10.06.2012 22:16
quelle
2

Das kommt vom offiziellen Prototyp:

  

Auswerten einer JavaScript-Antwort   Manchmal ist die Anwendung konzipiert   um JavaScript-Code als Antwort zu senden.   Wenn der Inhaltstyp der Antwort   entspricht dem MIME-Typ von JavaScript   dann ist das wahr und prototype wird   automatisch eval () gab den Code zurück.   Sie müssen die Antwort nicht verarbeiten   explizit, wenn Sie nicht müssen.

     

Alternativ, wenn die Antwort a enthält   X-JSON Header, sein Inhalt wird sein   analysiert, als Objekt gespeichert und an   die Rückrufe als zweites Argument:

     

new Ajax.Request ('/ some_url', {   Methode: 'get', onSuccess:   Funktion (Transport, JSON) {

%Vor%      

});

     

Verwenden Sie diese Funktionalität, wenn Sie nicht-trivial abrufen möchten   Daten mit Ajax aber wollen das vermeiden   Overhead der Analyse von XML-Antworten.   JSON ist viel schneller (und leichter) als   XML.

    
armel 03.02.2011 15:21
quelle
1

Sie könnten das Framework auch einfach überspringen. Hier ist eine Cross-Browser-kompatible Möglichkeit, Ajax zu machen, die in einem Kommentar-Widget verwendet wird:

%Vor%

Ich habe diesen Code hier Ссылка

veröffentlicht     
Andrew Johnson 17.05.2009 22:55
quelle

Tags und Links