2014-05-21 174 views
-1
<button id="getInfo">Get information</button> 
<div id="infoResponse"></div> 

<script> 
document.getElementById('getInfo').addEventListener('click', function(){ 
    getInfo(); 
}, false); 

function getInfo() { 
    var xml = new XMLHttpRequest(); 

    xml.onreadystatechange = function() { 
     if(xml.readyState == 4 && xml.status == 200) { 
      document.getElementById('infoResponse').innerHTML = xml.responseText; 
     } 
    }; 

    xml.open('GET', 'test.php', true); 
    xml.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    xml.send(null); 
} 
</script> 

如果用戶多次點擊該按鈕,如何停止再次運行請求?我想實現類似於jQuery的一個()事件函數如何停止多個ajax請求?

東西謝謝

+0

可以中止請求,但一旦申請獲取對服務器有沒有辦法來「阻止」它 – tymeJV

+0

要複製.one(),您只需在事件處理程序中解除綁定事件。 –

+0

點擊後可以用javascript禁用按鈕 – Kinnectus

回答

0

一鍵回調可以知道通過什麼地方設置的狀態再點擊一下回調。

如果您有旋轉裝載機,則可以查找該裝載機,因此,如果$('.spinner').length > 0那麼您不會在.getInfo()內進行XHR請求。

您也可以解除綁定並重新綁定事件偵聽器。 Onclick,取消綁定本身,並在XHR的成功回調中重新綁定點擊處理程序。

其中有兩種策略。祝你好運!

0

我來與解決方案,這是由於@KevinB

**document.getElementById('test').addEventListener('click', getInfo);** 

**function getInfo(e) {** 
var xml = new XMLHttpRequest(); 

**e.target.removeEventListener(e.type, arguments.callee);** 

xml.onreadystatechange = function() { 
    if(xml.readyState == 4 && xml.status == 200) { 
     document.getElementById('infoResponse').innerHTML = xml.responseText; 
    } 
}; 

xml.open('GET', 'test.php', true); 
xml.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
xml.send(null); 

}