Javascript 如果返回的内容不是空的,则停止setInterval
因此,我使用ajax通过POST检索一些数据,每5秒一次,我试图实现的是,如果php文件输出了一些内容,那么以某种方式停止setInterval或将其设置为9999999 以下是我尝试过的:Javascript 如果返回的内容不是空的,则停止setInterval,javascript,jquery,setinterval,Javascript,Jquery,Setinterval,因此,我使用ajax通过POST检索一些数据,每5秒一次,我试图实现的是,如果php文件输出了一些内容,那么以某种方式停止setInterval或将其设置为9999999 以下是我尝试过的: var interval = DEFINEDFROMMYQL; $(function() { setInterval(function() { $.ajax({ type: "POST",
var interval = DEFINEDFROMMYQL;
$(function() {
setInterval(function() {
$.ajax({
type: "POST",
url: "url/file.php",
data: "whatever=2",
success: function(html) {
$("#new").html(html);
if(html.lenght > 0) {
var interval = 99999999999999;
}
}
});
}, interval);
});
我是一个新手,因此任何帮助都将不胜感激。您可以使用来停止由setInterval
启动的计时器,并将键入的html.length
更正为html.length
// var interval = DEFINEDFROMMYQL;
$(function() {
yourInterval = setInterval(function() {
$.ajax({
type: "POST",
url: "url/file.php",
data: "whatever=2",
success: function(html) {
$("#new").html(html);
if(html.length > 0) {
///var interval = 99999999999999;
clearInterval(yourInterval);
}
}
});
}, interval);
});
您可以通过两种不同的方式来处理这个问题,但是基于您的问题(“以某种方式停止setinterval”),让我们将实现切换到,并将代码重构为我们可以调用的函数。所以
var interval = DEFINEDFROMMYQL;
$(function() {
// establish a function we can recall
function getDataFromServer(){
// this encapsulates the original code in a function we can re-call
// in a setTimeout later on (when applicable)
$.ajax({
type: "POST",
url: "url/file.php",
data: "whatever=2",
success: function(html) {
$("#new").html(html);
// only if the length is 0 do we re-queue the function
// otherwise (becase it's setTimeout) it will just die
// off and stop.
if(html.lenght == 0) {
setTimeout(getDataFromServer, interval);
}
}
});
}
// make an initial call to the function to get the ball rolling
setTimeout(getDataFromServer, interval);
// if you want it to execute immediately instead of wait out the interval,
// replace the above line to simply:
//getDataFromServer();
});
首先检查控制台中的错误。。。您键入的
lenght
将抛出错误他需要计时器的interval
变量。另外html.length
,而不是。lenght
谢谢,问题是Chrome没有抛出任何错误,不管怎样,您的示例很好,标记为已接受。