Warum nicht jquery wiederum mein array in einen json-string vor dem senden an asp.net web-Methode?
Bisher habe ich mich nur übergeben javascript-strings auf meiner web-Methoden, die analysiert, in der Regel als Guids. jetzt habe ich aber eine Methode nimmt eine IList... auf dem client erstelle ich das array mit Objekten, und versuchen Sie dann, um es zu übergeben wie:
$.ajax({
type: 'POST',
url: 'personalization.aspx/SetPersonalization',
data: "{'backerEntries':" + backerEntries + "}",
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: postcardManager.SetPersonalizationComplete
});
Den Beitrag:
{'backerEntries':[object Object],[object Object],[object Object]}
Den Fehler Antwort:
Invalid JSON primitive: object.
Aus irgendeinem Grund, jquery scheint nicht zu konvertieren, mein array in einen json-string? Irgendwelche Ideen, warum? Ich versucht, indem Sie [] um die backerEntries, und {}, als auch {[]} nur aus Verzweiflung. Übersehe ich etwas offensichtliches hier?
Du musst angemeldet sein, um einen Kommentar abzugeben.
..ist das gleiche wie
...das ist ziemlich viel nutzlos. Verwenden Duncan's Vorschlag, wenn Sie wollen einfach nur, um eine codierte Liste der Werte mit dem Namen "backerEntries" in deinem querystring. Wenn Sie möchten, um JSON-Kodierung der Daten, dann bekommen eine JSON-Bibliothek und rufen
JSON.stringify()
.Die Daten, die Sie übergeben, Sie versuchen, übergeben Sie es als string schon. Wenn Sie möchten, jQuery, um es zu transformieren lassen, die ganze Sache als ein Objekt, z.B.
Vorausgesetzt natürlich backerEntries ist ein array. jQuery sollte verwandeln Sie dieses und fügen es der querystring-wie ist die Standard-Verhalten. Ihre aktuelle code unter Berufung auf Standard-JavaScript-Verhalten, das nicht standardmäßig konvertiert ein array in seine string-Darstellung.
Da Sie mit ASP.NET Sie können die integrierte-in ASP.NET AJAX-Serialisierungs-Bibliothek:
dann passieren, dass Sie direkt in Ihre jQuery-ajax-call:
Dies ist KEIN gültiges JSON: { 'foo': 'bar' }
Ist nicht, war nie, wird es nie sein. JSON-Prozessoren sind oft sehr nachsichtig, das ist natürlich eine falsche Bequemlichkeit.
Lesen Sie die Spezifikation. Ein string definiert ist, in doppelte Anführungszeichen eingeschlossen werden, nicht in einfachen Anführungszeichen, nicht die smiley-Zeichen, nicht Stücke von Metall gebogen im rechten Winkel, nicht Steine. Es gibt keine Erwähnung von einfachen Anführungszeichen, Punkt.
Nun die property-Namen sind JSON-strings. Per definition, Sie MÜSSEN in doppelte Anführungszeichen eingeschlossen.
Gültig: { "foo": "bar" }
gilt" { "foo": 100 }
gültig: { "foo": true }
gültig: { "foo": [ "eins", "zwei" ], "bar": false }
sehen http://www.json.org
sehen http://www.jsonlint.com