0

如何每 5 秒获取一次数据?由于某种原因它不起作用

这是我的代码,但不起作用:

<script type="text/javascript">

        $(document).ready(function(){

            setTimeout(function() {
              $.ajax({ 
            url: 'test_api.php', 
            data: "", dataType: 'json', 
            success: function(rows) { 

                for (var i in rows) { 

                    var row = rows[i]; 

                    var availability = row[3]; 

                    var hostName = row[2];

                    var intranet = row[6];

                    var timeRespons = row[4]; 

                    $('body').append("<b>availability: </b>"+availability+"<b> hostName: </b>"+hostName+
                    "<b> intranet: </b>"+intranet+"<b> timeResponse: </b>"+timeRespons) .append("<hr />");

                    } 
                }
            });
            }, 5000);

        });

非常感谢您

4

2 回答 2

2

而不是使用setTimeout,使用setInterval

setTimeout在指定的时间过去后运行一次。

setInterval在指定时间连续运行,直到您使用 停止它clearInterval

$(document).ready(function() {
    setInterval(function() {
        $.ajax({
        url: 'test_api.php',
        data: "", dataType: 'json',
        success: function(rows) {
            for (var i in rows) {
                var row = rows[i];
                var availability = row[3];
                var hostName = row[2];
                var intranet = row[6];
                var timeRespons = row[4];

                $('body').append("<b>availability: </b>" + availability + 
                                 "<b> hostName: </b>" + hostName +
                                 "<b> intranet: </b>" + intranet + 
                                 "<b> timeResponse: </b>"+timeRespons) 
                         .append("<hr />");

                }
            }
        });
    }, 5000);
});
于 2013-07-12T11:03:41.190 回答
1

使用setInterval, 如果你想每 5 秒调用一次函数。该setInterval()方法以指定的时间间隔(以毫秒为单位)调用函数或计算表达式。

其中 as 该setTimeout()方法在指定的毫秒数后调用函数或计算表达式。

更改您的代码

setInterval(function() {
  $.ajax({ 
    url: 'test_api.php', 
    data: "", dataType: 'json', 
    success: function(rows) { 
        $('body').html(''); //Clear content
        for (var i in rows) { 
            var row = rows[i]; 
            var availability = row[3]; 
            var hostName = row[2];
            var intranet = row[6];
            var timeRespons = row[4]; 
            $('body').append("<b>availability: </b>"+availability+"<b> hostName: </b>"+hostName+
            "<b> intranet: </b>"+intranet+"<b> timeResponse: </b>"+timeRespons) .append("<hr />");
            } 
        }
    });
}, 5000);

如果要覆盖body内容,请使用$('body').html(htmlstring);

演示

于 2013-07-12T10:59:27.497 回答