我正在尝试通过AJAX进行轮询,并希望在AJAX调用成功后清除超时。问题是超时从不清除,新的AJAX请求继续被解雇。
我在SO上查找了类似的问题,但他们都认为问题是一个本地范围的变量。但是,我在我的函数之外声明了poll_xhr
变量。
<script>
var poll_xhr = null;
(function poll() {
poll_xhr = setTimeout(function () {
$.ajax({
type: 'POST',
dataType: 'json',
url: 'check-status/',
success: function (data) {
console.log(data);
if(data === 'OK') {
clearTimeout(poll_xhr);
window.location.href = '../'
}
},
complete: poll
});
}, 3000);
})();
</script>
答案 0 :(得分:7)
这就是您的代码所做的事情:
poll
启动一个新超时。如果您想提出其他请求,请移除complete: poll
并将poll()
置于if
语句(您当前拥有clearTimeout
)中。
答案 1 :(得分:-1)
为了检查,在数据中加入一些警报==='确定'。如果没有表示,则存在数据类型不匹配。要解决此问题,请尝试使用data =='确定'。