IE中带有数据的jQuery Cross Domain Post

时间:2012-08-19 00:50:55

标签: javascript jquery cors

CORS在我的应用程序中完美适用于Chrome,Firefox。使用此插件https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest

我能够获得在IE中工作的CORS请求,如下所示:

$.ajax({
    url: url,
    type:"POST",
    dataType: "json"
});

但是当我尝试在POST请求中发送数据时,例如:

$.ajax({
    url: url,
    type:"POST",
    dataType: "json",
    data: {test: 5}
});

它不起作用。有没有人设法让IE发出包含POST数据的CORS请求?

谢谢!

2 个答案:

答案 0 :(得分:0)

我注意到在jQuery-ajaxTransport-XDomainRequest源代码中,传递userOptions.data的send函数调用被注释掉了,并且活动的send()调用没有参数:

我遇到了与POST相同的问题,没有数据进入服务器。所以我用数据调用取消注释send:

xdr.send(userOptions.data);
//xdr.send();

然而它仍然没有发送数据。所以我更改了' POST'到' GET 并更新我的服务器代码来处理它。那真的有用了!我没有做更多的测试,我不确定GET是否可以接受我正在开发的代码。

更新:我进一步测试并使用send()或send(userOptions.data)似乎对IE没有任何影响。正是GET的改变让它发挥作用,所以如果你必须在你的ajax代码中使用POST,POST仍然是一个问题。

由于我是新跨域ajax发布数据(IE是问题),我希望其他人发布他们的发现,以便它适用于POST和GET。谢谢你的帮助!

答案 1 :(得分:0)

jQuery-ajaxTransport-XDomainRequest 实现,至少截至今天,在几个方面是有缺陷的,尤其是它不会在POST中发送任何数据。 我建议使用此插件,而不是我们在https://github.com/jaubourg/ajaxHooks/blob/master/src/xdr.js

中取得了很好的效果

我还推荐阅读本文,该文章解释了Microsoft实施XDomainRequest的所有缺陷和局限: http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx

有关同一主题的帖子,请参阅此主题:CORS with jQuery and XDomainRequest in IE8/9