2011-11-21 41 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