如何停止多个ajax请求

How to stop multiple ajax requests?

本文关键字:ajax 请求 何停止      更新时间:2023-09-26
<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 one()事件函数的东西

谢谢

一个点击回调可以通过在某处设置状态来知道另一个点击回调。

如果你有一个旋转加载器,你可以寻找它,所以如果$('.spinner').length > 0,那么你不继续在.getInfo()中发出XHR请求。

还可以取消绑定和重新绑定事件侦听器。点击,取消绑定,在XHR成功回调时,重新绑定点击处理程序。

众多策略中的两种。好运!

我的解决方案是这要感谢@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);

}