Recentemente mi sono reso conto che dovevo usare easyXDM invece di $.ajax
di jQuery per fare una richiesta di post interdominio. Dopo aver ottenuto easyXDM istituito vedo che le funzioni si allineano abbastanza da vicino:Come posso inviare un oggetto/array javascript come coppie chiave-valore tramite un post AJAX con easyXDM?
jQuery:
$.ajax({
url: "/ajax/",
method: "POST",
data: myData
});
easyXDM:
xhr.request({
url: "/ajax/",
method: "POST",
dataType: 'json', // I added this trying to fix the problem, didn't work
data: myData
});
myData è messa a punto qualcosa di simile:
myData = {};
myData[1] = 'hello';
myData[2] = 'goodbye';
myData[3] = {};
myData[3][1] = 'sub1';
myData[3][2] = 'sub2';
myData[3][3] = 'sub3';
Quando faccio la richiesta con jQuery gestisce correttamente i sottocampi, ma non con easyXDM.
Ecco come la richiesta POST viene al server con jQuery:
screenshot-with-shadow.png http://img37.imageshack.us/img37/4526/screenshotwithshadow.png
Ed ecco come si arriva con easyXDM:
screenshot-with-shadow.png http://img204.imageshack.us/img204/4526/screenshotwithshadow.png
Come posso inviare una javascript object/array di coppie chiave-valore tramite una richiesta easyXDM/XHR come fa jQuery?
Dalla documentazione: "Se non impostato easyXDM tenterà di utilizzare l'oggetto JSON nativo", quindi a meno che non si sta eseguendo l'override del serializzatore allora il vostro oggetto deve venire fuori come ci si aspetta? Forse la coercizione di tipo sta accadendo da qualche parte nel tuo codice precedente? – robC
Sembra che questo potrebbe essere un problema con easyXDM. Sembra che nel file cors/index.html proverà e serializzerà i dati senza prima controllare se è già una stringa e non sembra gestire la codifica JSON multilivello ... https: // github. com/oyvindkinsey/easyXDM/issues/199 – cwd
@robC - per quanto riguarda il tuo commento ora cancellato Penso che sia un problema con easyXDM - vedi il mio test http://pastebin.com/0eusK2vr – cwd