Warum ändert jquery mein Array nicht in eine JSON-Zeichenfolge, bevor es an die ASP.net-Webmethode gesendet wird?

8

Bisher habe ich JavaScript-Strings nur an meine Webmethoden übergeben, die geparst werden, normalerweise als Guids. aber jetzt habe ich eine Methode, die eine IList akzeptiert ... auf dem Client, ich baue dieses Array von Objekten und dann versuchen, es wie folgt zu übergeben:

%Vor%

Der Beitrag:

%Vor%

Die Fehlerreaktion:

%Vor%

Aus irgendeinem Grund scheint jquery mein Array nicht in eine JSON-Zeichenfolge zu konvertieren. Irgendwelche Ideen warum? Ich habe versucht, [] um die BackerEntries und {}, sowie um [[]} nur aus reiner Verzweiflung herumzulegen. Fehle ich etwas Offensichtliches hier?

    
EvilSyn 31.10.2008, 23:04
quelle

4 Antworten

10
  

data: "{'backerEntries':" + backerEntries + "}",

.. ist dasselbe wie

%Vor%

... was ziemlich nutzlos ist. Verwenden Sie Duncan Vorschlag, wenn Sie nur eine codierte Liste von Werten mit dem Namen "backerEntries" in Ihrer Querystring übergeben möchten. Wenn Sie die Daten JSON-codieren möchten, rufen Sie eine JSON-Bibliothek auf und rufen Sie% an. co_de%.

    
Shog9 31.10.2008, 23:45
quelle
4

Die Daten, die Sie übergeben, versuchen, sie bereits als Zeichenfolge zu übergeben. Wenn Sie möchten, dass jQuery es transformiert, lassen Sie das Ganze als Objekt, z. B.

%Vor%

Angenommen backerEntries ist natürlich ein Array. jQuery sollte dies transformieren und an die Querystring anhängen, da dies das Standardverhalten ist. Ihr aktueller Code basiert auf dem Standard-JavaScript-Verhalten, das ein Array nicht standardmäßig in seine Zeichenfolgendarstellung konvertiert.

    
Duncan 31.10.2008 23:39
quelle
2

Da Sie ASP.NET verwenden, können Sie die integrierte ASP.NET AJAX-Serialisierungsbibliothek verwenden:

%Vor%

Übergeben Sie das direkt in Ihrem jQuery Ajax-Aufruf:

%Vor%     
Herb Caudill 01.11.2008 16:46
quelle
-2

Dies ist NICHT gültig JSON: {'foo': 'bar'}

Ist nicht, war nie, wird nie sein. JSON-Prozessoren sind oft sehr fehlerverzeihend, was natürlich eine falsche Bequemlichkeit ist.

Lesen Sie die Spezifikation. Ein String ist so definiert, dass er in doppelte Anführungszeichen eingeschlossen ist, keine einfachen Anführungszeichen, keine Smiley-Zeichen, keine rechtwinklig gebogenen Metallstücke, keine Steine. Es gibt keine Anführungszeichen, Punkt.

Nun sind Eigenschaftsnamen JSON-Zeichenfolgen. Per Definition sind sie in Anführungszeichen eingeschlossen.

Gültig: {"foo": "bar"} gültig "{" foo ": 100} gültig: {"foo": true} gültig: {"foo": ["eins", "zwei"], "bar": false}

siehe www.json.org

siehe www.jsonlint.com

    
Rick O'Shay 14.08.2009 21:04
quelle

Tags und Links