在Firefox 3中,每个域的答案是6:只要触发到同一个域的第7个XmlHttpRequest(在任何选项卡上),它就会排队,直到其他6个完成.
其他主流浏览器的数字是多少?
此外,有没有办法绕过这些限制而不让我的用户修改他们的浏览器设置?例如,jsonp请求的数量是否有限制(使用脚本标记注入而不是XmlHttpRequest对象)?
背景:我的用户可以从网页向服务器发出XmlHttpRequests,要求服务器在远程主机上运行ssh命令.如果远程主机关闭,ssh命令将花费几分钟时间失败,最终阻止我的用户执行任何进一步的命令.
我想根据多个ajax/json请求的结果更新页面.使用jQuery,我可以"链接"回调,就像这个非常简单的剥离示例:
$.getJSON("/values/1", function(data) {
// data = {value: 1}
var value_1 = data.value;
$.getJSON("/values/2", function(data) {
// data = {value: 42}
var value_2 = data.value;
var sum = value_1 + value_2;
$('#mynode').html(sum);
});
});
Run Code Online (Sandbox Code Playgroud)
但是,这导致请求是连续的.我更倾向于一种并行发出请求的方法,并在完成后执行页面更新.有没有办法做到这一点?
我正在使用jQuery同时尝试检索多个数据.要求的背景是不同的数据位需要不同的时间才能变得可用,因此我希望在返回时显示每个部分.
问题是请求似乎"排队"; 下一个请求直到前一个请求返回为止.经过广泛阅读后,似乎选项'async:false'可能就是我所追求的,但这似乎没有任何区别.
从TCP/IP调试我可以看到浏览器不会启动多个连接; 它在先前请求返回时使用相同的连接.
我在我的时间里看到很多网站同时在ajax上加载数据,所以很明显它是可能的,但是我正试图让我的头发工作.
这是我的代码:
$.ajax({
type: "GET",
async: false,
url: "foo1.php"
});
$.ajax({
type: "GET",
async: false,
url: "foo2.php"
});
$.ajax({
type: "GET",
async: false,
url: "foo3.php"
});
Run Code Online (Sandbox Code Playgroud)