我遇到了一个无法退出此setInterval的问题。此函数对Ajax调用PHP文件。如果返回的数据很有用,它会将全局变量设置为数据,然后它应该返回并停止调用该PHP文件。我目前遇到的问题是,即使它获得有用的数据,它也不会停止运行。回报似乎没有效果。也许我只需要另外一套眼睛。
NSDate
答案 0 :(得分:1)
您需要clearInterval
而不是return
:
var interval= setInterval(function(){
clearInterval(interval); //clear interval
}, 9000)
间隔是您要取消的重复操作的标识符。此ID从setInterval()返回。
所以在你的情况下它应该是:
var interval = setInterval(function() {
$.ajax({
type: "POST",
url: 'www.example.com/test.php',
success: function(data) {
alert(data);
if (data != 'None') {
url = data;
document.getElementById("disableddesktop").style.display = "none";
document.getElementById("download").style.display = "block";
document.getElementById("enableddesktopscan").style.display = "block";
$.ajax({
type: "POST",
url: 'www.example.com/test.php',
data: {
plan: document.getElementById("plan").value,
country: document.getElementById("firstcountry").value
},
success: function(data) {
console.log(data);
numberoforders = data;
document.getElementById("total").innerHTML = data;
}
});
clearInterval(interval); //clear interval
}
}
});
}, 9000);
正如mplungjan所说,将
setInterval
用于AJAX并不是一个好主意 而是使用setTimeout
答案 1 :(得分:0)
要停止setInterval,请使用变量和clearInterval:
var tId = setInterval();
clearInterval(tId)
然而,使用setInterval和Ajax并不是一个好主意。
而是这样做:
function getData() {
$.ajax({
type: "POST",
url: 'www.example.com/test.php',
success: function(data) {
// alert(data); // NEVER alert in an setInterval or setTimeout
if (data != 'None') {
url = data;
document.getElementById("disableddesktop").style.display = "none";
document.getElementById("download").style.display = "block";
document.getElementById("enableddesktopscan").style.display = "block";
$.ajax({
type: "POST",
url: 'www.example.com/test.php',
data: {
plan: document.getElementById("plan").value,
country: document.getElementById("firstcountry").value
},
success: function(data) {
console.log(data);
numberoforders = data;
document.getElementById("total").innerHTML = data;
}
});
}
else setTimeout(getData,9000);
}
});
}