18 Stimmen

jQuery.ajax() + leeres JSON-Objekt = Parse-Fehler

Ich erhalte einen Parse-Fehler, wenn Sie jQuery verwenden, um einige JSON-Daten zu laden. Hier ist ein Ausschnitt aus meinem Code:

jQuery.ajax({
    dataType: "json",

    success: function (json)
    {
        jQuery.each(json, function ()
        {
            alert(this["columnName"]);
        });
    }
});

Ich erhalte keine Fehler beim Parsen eines nicht leeren JSON-Objekts. Also meine Vermutung ist, dass das Problem mit meinem Serialisierer ist.

Die Frage ist: Wie formatiere ich ein leeres JSON-Objekt, das jQuery nicht als missgebildet betrachtet?

Das habe ich bis jetzt versucht, ohne Erfolg:

{[]}

{[null]}

{}

{null}

{"rows": []}

{"rows": null}

{"rows": {}}

UPDATE:

Ich kann verstehen, dass ich mich etwas vage ausgedrückt habe - lassen Sie mich versuchen, das zu klären:

Parsing des JSON-Objekts ist nicht das Problem hier - JQuery ist - ich denke.

jQuery löst einen Parse-Fehler aus (ruft die Fehlerfunktion auf). Es scheint, dass die interne JSON-Validierung von jQuery keines der zuvor genannten Objekte akzeptiert. Nicht einmal die gültigen Objekte.

Die Ausgabe der Fehlerfunktion ist:

XMLHttpRequest: XMLHttpRequest readyState=4 status=200
textStatus: Parser-Fehler
errorThrown: undefiniert

Dies gilt für alle vorgenannten Objekte.

0 Stimmen

Das ist das Problem mit Teilmengen, sie haben nicht alles.

0 Stimmen

Alle außer Ihrem 3. Beispiel sind kein gültiges JSON, da es keinen Schlüssel im Wörterbuch gibt

0 Stimmen

Aktualisiert mit ein paar weiteren Versuchen. Erhalte immer noch Parse-Fehler.

1voto

Botond Béres Punkte 14547

Haben Sie überprüft, ob das JSON vor dem "Each" korrekt zurückgegeben wird? Legen Sie den leeren Wert als {} fest, und überprüfen Sie, ob er vor .each so ist

Es wäre auch hilfreich zu wissen, wie Ihr JSON aussieht, wenn Daten vorhanden sind.

0voto

Chris Punkte 21

Ich hatte ähnliche Probleme, wenn ich gültiges JSON vom Server anforderte.

Mein Server lieferte den Inhaltstyp text/javascript

Ich war nicht mit dem optionalen jQuery.ajax Einstellung von "dataType" so jQuery wurde die Ausgabe ein Javascript (zB gepolstert JSON), nicht ordentlich JSON zu interpretieren.

Das Hinzufügen eines dataType:'JSON' zum Einstellungsobjekt, das an die ajax-Methode von jQuery übergeben wird, löste das Problem.

0voto

Bowofola Punkte 1004

Hatte dieses Problem auch und löste es, indem ich den jsonserializer in meinem Webservice verwendete, um eine leere Zeichenkette zu formatieren. Das Ergebnis war "\"\"" im Wesentlichen "" ;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X