我想对另一个域上的服务器运行多个异步ajax调用(我使用jquery和jsonp进行X域调用)。当我不时拨打电话时,一切正常。但是,如果我使用不同的回调对不同的URL运行多个不同的调用,则所有调用都将中止(根据firebug)。下面的脚本可以很好地重现问题。我的apache服务器在http://domain.com:80。
var urls=new Array();
urls.push("https://domain.com:9943/stuff?callback=fnReturn");
urls.push("https://domain.com:9943/stuff?callback=fnReturn2");
urls.push("https://domain.com:9943/stuff?callback=fnReturn3");
for(var i=0;i<urls.length;i++){
uri = urls[i];
var tmp=uri.split("=");
jsonWrapperFunction=tmp[tmp.length-1];
console.log("calling: "+uri);
var xhr=$.ajax({
crossDomain: true,
type:"GET",
contentType: "application/json",
url: uri,
timeout: 60000,
success: function(response) {
console.log("WORKING"+response);
},
error: function(xhr, status, error) {
console.log("ERROR"+error);
},
dataType: "jsonp",
jsonpCallback: jsonWrapperFunction
});
}
当我在chrome上运行时,我收到以下错误: 获取https://domain.com:9943&callback=fnReturn&_=1444944920008 net :: ERR_EMPTY_RESPONSE 发送@jquery-1.11.2.min.js:4m.extend.ajax @jquery-1.11.2.min.js:4
在firefox中,请求立即中止。但是,如果我在调用之间放置一点暂停(睡眠),那么它们往往会起作用。
我的第一个想法是关于冲突的XMLHTTPRequest对象,但找不到任何关于如何使其工作的提示。
提前感谢您的指导。