Fehler beim senden von Arrays in node.js und Steckdose.io
Verwende ich socket.io version 0.8.4
Habe ich eingekocht mein problem das folgende. Ich habe die Daten so Aussehen:
data.prop1 = [];
data.prop1.push("man");
data.prop2 = [];
data.prop2["hey"] = "man";
Sende ich die Daten vom server auf den client auf diese Weise:
socket.emit("data", data);
Auf der client-Seite erhalte ich die Daten auf diese Weise:
socket.on("data", function(data){ console.log(data); });
Komisch ist:
data.prop1 = [];
data.prop1.push("man"); //This data exists in the client side data object
data.prop2 = [];
data.prop2["hey"] = "man"; //This data does not exist.
Daten.prop2 ist nur ein leeres array auf der client-Seite.
Gibt es einen bekannten Fehler in json-Serialisierung von arrays über das Formular in der prop2?
Danke im Voraus
EDIT:
Problem gelöst mit diesem workaround:
data.prop1 = [];
data.prop1.push("man");
data.prop2 = {}; //<= Object instead of array
data.prop2["hey"] = "man";
Du musst angemeldet sein, um einen Kommentar abzugeben.
ECMA-262 über
JSON.stringify
:Arrays sollen numerische Eigenschaft Namen. Also, wenn die
data.prop2
verwandelt JSON (die Buchse.io sendet die Daten, ich kann mir vorstellen), wird es nicht der'hey'
Eigenschaft. Wenn Sie verwenden möchten, die nicht-numerische Namen der Eigenschaft, die Sie verwenden sollten Objekte anstelle von arrays:Leider Javascript nicht wirklich wie das funktioniert.
Check-out dieser Artikel, etwa auf halbem Weg nach unten. Es erklärt das problem, wenn Sie versuchen, Daten.prop2["he"] = "Mann";