2015-02-06 21 views
0

取消我有以下問題:
我試圖發送兩個AJAX請求almosts simulateously:
在速度較慢的網絡前面的Ajax請求被通過後續

function ajax() 
{ 
    xhr = new XMLHttpRequest(); 
    xhr.onreadystatechange = function() 
    { 
     if(xhr.readyState == 4) 
     console.log(xhr.responseText); 
    } 
    xhr.open('GET', 'list.html', true); 
    xhr.send(''); 
} 
ajax(); 
ajax(); 

的問題是,只是其中之一成功。
如果我嘗試DevTools我自己,如果網絡速度很高,它們會同時執行(當我在控制檯中快速鍵入ajax()函數兩次時),而如果我降低網絡速度並再次快速鍵入它們只有其中一個成功。
這是怎麼發生的?我怎樣才能避免這種自動取消xhr請求?

回答

2

您應該使用本地變量來保存XMLHttpRequest。由於您使用的是全局變量,因此回調函數始終引用發送的第二個AJAX請求。所以改變:

xhr = new XMLHttpRequest(); 

到:

var xhr = new XMLHttpRequest(); 

然後每個回調funtion將是指發送特定請求關閉。

+0

是的我輸錯了,現在它工作。但我簡化了這個問題,我真正的問題是我有一個內部的對象,其中有一個方法可以在其中創建一個xhr請求,並且我正在使用var xhr,但是我只能執行一個。那裏會出現什麼問題? – 2015-02-06 23:56:52

+0

URL參數是否相同?嘗試添加緩存攔截器,以防止緩存被使用。 – Barmar 2015-02-07 00:00:15