serialisieren der JSON-Daten-Paket in einer jQuery Ajax POST
Habe ich eine Datenstruktur, die wie bei sockel
var s = {
"a": "foo",
"b": 5,
"c": {"d": "a long string"},
"e": {
"f": {
"g": {
"h": [1, 0, -2.1, 1.43]
}
},
"i": {
"j": {
"k": [-3.2, 3.003, 0, 0]
}
}
}
};
Will ich bewahren Sie das "a", "b", "c" und "e" Tasten der variable s
in einer Datenbank-Tabelle, so kann ich rekonstruieren Sie wieder zurück. Ich sende s
über eine jQuery Ajax POST. Die Werte werden eingefügt und gespeichert als nur text (außer "b" ist immer eine Zahl).
ajax: {
url: uri,
type: "POST",
data: s,
dataType: "json",
success: function(data, status) { .. }
}
Hier ist das problem, ich bin der Begegnung. Im Firebug kann ich sehen, wie meine post-Parameter... Sie sind wirklich Durcheinander. Scheint, wie die Daten serialisiert wurden auf der Ebene der einzelnen Elemente (ein bisschen wie eine Tiefe Serialisierung), während ich hoffte auf so etwas wie
e={"f":{"g":{"h":[1,0,-2.1,1.43]}},"i":{"j":{"k":[-3.2,3.003,0,0]}}}
Update: Anstelle, ich erhalte die folgende (ich habe unescaped die Zeichenfolge unten, so ist es besser lesbar)
a=foo&b=5&c[d]=a long string&e[f][g][h][]=1&e[f][g][h][]=0&e[f][g][h][]=-2.1&e[f][g][h][]=1.43
Bin ich vielleicht tun dies der falsche Weg, so fühlen sich frei, um mich auf einen besseren Weg.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
JSON.stringify
Methode zum serialisieren der Daten-Objekt in eine Zeichenfolge und poste es. Auf der server-Seite nur speichern Sie diese wie in deiner DB. Versuchen Sie, dieseFast alle modernen Browser unterstützen JSON nativ. Für die Browser, die haben es nicht nativ können Sie auch die benötigten js aus http://ajax.cdnjs.com/ajax/libs/json2/20110223/json2.js
jQuery
nur nicht URI-Codierung, um es sicher genug ist, um die übertragung über HTTP. Ich glaube nicht, es wird so Kodieren Sie die Zeichenfolge.var str = ""; for (var i in s) {str += i + "=" + (typeof(s[i]) == "object" ? JSON.stringify(s[i]) : S[i]) + "&";}