2014-05-21 134 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); 

}