Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果返回的内容不是空的,则停止setInterval_Javascript_Jquery_Setinterval - Fatal编程技术网

Javascript 如果返回的内容不是空的,则停止setInterval

Javascript 如果返回的内容不是空的,则停止setInterval,javascript,jquery,setinterval,Javascript,Jquery,Setinterval,因此,我使用ajax通过POST检索一些数据,每5秒一次,我试图实现的是,如果php文件输出了一些内容,那么以某种方式停止setInterval或将其设置为9999999 以下是我尝试过的: var interval = DEFINEDFROMMYQL; $(function() { setInterval(function() { $.ajax({ type: "POST",

因此,我使用ajax通过POST检索一些数据,每5秒一次,我试图实现的是,如果php文件输出了一些内容,那么以某种方式停止setInterval或将其设置为9999999

以下是我尝试过的:

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没有抛出任何错误,不管怎样,您的示例很好,标记为已接受。