Niedawno zdałem sobie sprawę, że muszę użyć easyXDM zamiast jQuery's $.ajax
, aby utworzyć żądanie wpisu między domenami. Po dostaniu easyXDM skonfigurować widzę, że funkcje kolejce dość ściśle:Jak mogę wysłać obiekt/tablicę javascript jako pary klucz-wartość za pośrednictwem posta AJAX z 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 jest ustawiony coś takiego:
myData = {};
myData[1] = 'hello';
myData[2] = 'goodbye';
myData[3] = {};
myData[3][1] = 'sub1';
myData[3][2] = 'sub2';
myData[3][3] = 'sub3';
Kiedy wykonuję żądanie z jQuery, obsługuje on prawidłowo pola podrzędne, ale nie w easyXDM.
Oto jak żądanie POST przychodzi do serwera z jQuery:
screenshot-with-shadow.png http://img37.imageshack.us/img37/4526/screenshotwithshadow.png
A oto jak to przychodzi z easyXDM:
screenshot-with-shadow.png http://img204.imageshack.us/img204/4526/screenshotwithshadow.png
Jak mogę wysłać obiekt javascript/tablica par klucz-wartość za pośrednictwem żądania easyXDM/XHR, takiego jak jQuery?
Od docs: „Jeśli nie ustawiono easyXDM spróbuje użyć natywnej obiekt JSON”, więc jeśli nie jesteś przesłanianie serializatora wówczas obiekt powinien wychodzić jak można się spodziewać? Być może typ przymusu dzieje się gdzieś w poprzednim kodzie? – robC
Wygląda na to, że może to być problem z easyXDM. Wygląda na to, że w pliku cors/index.html spróbuje serializować dane bez uprzedniego sprawdzenia, czy jest już ciągiem znaków i nie obsługuje wielopoziomowego kodowania JSON ... https: // github. com/oyvindkinsey/easyXDM/issues/199 – cwd
@robC - odnośnie do twojego skasowanego komentarza Myślę, że to jest problem z easyXDM - zobacz mój test http://pastebin.com/0eusK2vr – cwd