2011-11-21 20 views
2

我有以下几点:同时AJAX调用导致的随机误差

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 ='this'的div将填充由THAT调用返回的数据。当我查看应用程序服务器日志时,发现一些意想不到的情况,例如只有一个请求。

当我运行在Firebug中时,从未发生错误,一切都很好。我注意到Firebug大大降低了浏览器的运行速度,所以我认为这是解决这个问题的一个线索,与并发性有关。第二次调用在某些时刻首先从服务器返回,浏览器认为它是对第一次调用的响应。正确?

因此,在我有限的AJAX体验中,我认为它支持在服务器上抛出几个并发请求,然后按照它们返回的顺序排列响应。这个问题使我相信AJAX(或者我的Firefox版本= 3.6.24/jQuery = 1.4.4)会看到两个请求到同一个url,尽管它们都有不同的参数。

我在Google上看到了这个排名很高的页面:http://blogger.forgottenskies.com/?p=173,这让我相信我并不是唯一一个遇到过这个问题的人。

感谢您的任何见解。

+0

您可以在代码中展开“etc ...”部分吗?你不显示你如何插入回调(我想它是'成功:回调'),你不会显示你干扰其他选项。 – LeGEC

回答

1

尝试将cache: false添加到您传递给您的$.ajax()呼叫的选项中。我认为这不仅影响IE,但...

查看缓存选项的位置:http://api.jquery.com/jQuery.ajax/

+0

它已经在通话中,只是不在我上面的要点,所以这不是问题。谢谢。 – bethesdaboys