Ich versuche, einige Daten asynchron als ein einzelnes Objekt zu senden. Die Hälfte der Daten kommt von meinem KnockoutJS viewModel. Die andere Hälfte ist einige Daten, die ich auf, dass hinzufügen möchten.
Mein Gedanke war, sie beide in JSON-Objekte zu konvertieren, dann verwenden Sie ein Array .concat, um sie zusammen zu setzen. Aber das funktioniert nicht. Könnten Sie wissen, warum?
Ich habe ein paar Lösungen ausprobiert. Die erste Methode erstellt ein Objekt aus einer JSON-Zeichenkette und verwendet dann JSON.parse, um sie in ein Objekt zu verwandeln. Die zweite versucht, Strings ganz zu vermeiden. So oder so, nachdem ich meine Objekte erhalte, versuche ich, sie miteinander zu verknüpfen, aber ohne Erfolg.
Mit Streichern
toAddString = '{"file": "thefile"}';
toAddObj = JSON.parse(toAddString);
koString = ko.toJSON(viewModel);
koObj = JSON.parse(koString,null,2);
finalObj = koObj.concat(toAddObj);
Mit Objekten
toAddObj = [{"file": "thefile"}];
koObj = ko.toJS(viewModel);
finalObj = koObj.concat(toAddObj);
Mit Objekten (2)
toAddObj = new Object();
toAddObj.file = "one";
koObj = ko.toJS(viewModel);
finalObj = koObj.concat(toAddObj);
Wissen Sie, was hier schief laufen könnte?
Alles, was ich will, ist ein einziges Objekt, sei es ein Array oder ein JSON-Objekt, das die Daten aus jeder dieser Quellen enthält.