最近,我意识到我需要使用easyXDM而不是jQuery的$.ajax来发出跨域发布请求。设置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设置如下:
myData = {};
myData[1] = 'hello';
myData[2] = 'goodbye';
myData[3] = {};
myData[3][1] = 'sub1';
myData[3][2] = 'sub2';
myData[3][3] = 'sub3';

当我使用jQuery发出请求时,它可以正确处理子字段,但不能使用easyXDM处理。

这是POST请求与jQuery一起进入服务器的方式:

screenshot-with-shadow.png http://img37.imageshack.us/img37/4526/screenshotwithshadow.png

这是easyXDM的功能:

screenshot-with-shadow.png http://img204.imageshack.us/img204/4526/screenshotwithshadow.png

如何像jQuery一样通过easyXDM / XHR请求发送javascript对象/键-值对数组?

最佳答案

鉴于注释中讨论的easyXDM的局限性,使用它的唯一方法是将数据传递给.request时手动序列化数据。

xhr.request({
    url: "/ajax/",
    method: "POST",
    data: {jsonData: JSON.stringify(myData)}
});

或者,您可以创建自己的postMessage解决方案,但将不包括IE7及以下版本。

08-19 07:45