0
<script>
    $(document).ready(function(){
        ajaxcall();
    });
    function ajaxcall(){
    $.ajax({
          url: 'test.php',
            success: function(data) { 
                data = data.split(':');
                $('#hours').html(data[0]);
                $('#minutes').html(data[1]);
                $('#seconds').html(data[2]);
                ajaxcall();
            }
        });
    }
    </script>
    <span id="hours">0</span>:<span id="minutes">0</span>:<span id="seconds">0</span>

在这段代码中,我调用了 ajax 函数 onsuccess,所以它将是无限循环。它会引起任何问题吗?

4

2 回答 2

2

这将导致您的浏览器最终耗尽内存并崩溃,因为每个调用都将保存在调用堆栈中。我错了; 回调是异步的,因此控制权将离开父函数。如果您尝试更新时间,我建议您改为执行以下操作:

$(document).ready(function(){
    setInterval(ajaxcall, 1000); //calls ajaxcall every 1000 microseconds
});

function ajaxcall(){
   $.ajax({
        url: 'test.php',
        success: function(data) { 
            data = data.split(':');
            $('#hours').html(data[0]);
            $('#minutes').html(data[1]);
            $('#seconds').html(data[2]);
        }
   });
}
于 2012-06-07T18:15:13.917 回答
1

不会有什么不好的事情发生。它会进行 ajax 调用,等待它返回,然后永远进行另一个调用。这本身并没有错。请注意,您的服务器端操作不要太繁重,不要传输太多数据,以免浪费太多带宽。

如果您希望能够停止它,您可以创建一个变量来定义是否继续进行调用,并随时将其关闭。

var keepCalling = true;

function ajaxCall() {
    if (!keepCalling)
        return;

    //ajax call...
}

设置keepCallingfalse将在当前呼叫完成后停止呼叫。

于 2012-06-07T18:15:13.093 回答