我有以下内容:
myfunc = function(url, callback, etc...) {
$.ajax({
type: 'GET',
url: url,
etc.});
}
function changeDivThis(data) {
$('#this').html(data);
}
function changeDivThat(data) {
$('#that').html(data);
}
我连续两次调用ajax get函数:
myfunc('/getData?mode=THIS', changeDivThis, etc...);
myfunc('/getData?mode=THAT', changeDivThat, etc...);
结果是在很长一段时间内,比如20%的时间,id ='这个'将填充由THAT调用返回的数据。当我查看应用服务器日志时,我会看到一些意想不到的东西,比如只有一个请求。
当我在Firebug中运行时,错误永远不会发生,一切都很好。我注意到Firebug大大减慢了浏览器的运行速度,所以我假设这是原因的一个线索,与并发有关,例如:第二个调用在某些场合首先从服务器返回,浏览器认为它是对第一个调用的响应。正确的吗?
因此,在我对AJAX的有限经验中,我认为它支持在服务器上抛出几个并发请求,然后按照它们返回的顺序整理响应。这个问题让我相信AJAX(或我的Firefox版本= 3.6.24 / jQuery = 1.4.4)看到两个请求相同的url,即使它们都有不同的参数。
我在Google上看到这个排名很高的页面:http://blogger.forgottenskies.com/?p=173这让我相信我并不是唯一一个遇到这个问题的人。
感谢您的任何见解。
答案 0 :(得分:1)
尝试将cache: false
添加到您传递到$.ajax()
来电的选项中。我认为这只会影响IE,但是......
请在此处查看缓存选项:http://api.jquery.com/jQuery.ajax/
答案 1 :(得分:1)
某些浏览器对可以同时发出的请求数量有限制。您可能想要阅读此帖子How many concurrent AJAX (XmlHttpRequest) requests are allowed in popular browsers?
过去我使用队列来限制我的代码发送的同时请求的数量。