JQuery在页面加载时加载json数据,然后每60秒调用一次json数据

时间:2017-07-31 15:09:56

标签: jquery

我有一个脚本从另一个脚本调用一些json数据但是页面加载时有一个延迟。我试过定位" setInterval(函数)"但是当脚本第一次运行时,我无法加载数据。

我是否正确设置了setInterval。

$(document).ready(function() {
setInterval(function(){
$.getJSON("get_data.php", function(json){
json = json[0].data;
var tr ;
for (var i = 0; i < json.length; i++) {
    tr = $('<tr/>');
    tr.append("<td width='33%'><div class='clientname-text'>" + json[i].ClientName + "</div></td>");
    tr.append("<td width='33%'><div class='roomname-text'>" + json[i].RoomName + "</div></td>");
    tr.append("<td width='33%'><div class='time-text'>" + json[i].RoomFromTime + " - " + json[i].RoomToTime + "</div></td>");

 $('table').append(tr);
}
});
}, 60000);
});

非常感谢你的时间。

3 个答案:

答案 0 :(得分:2)

将所有这些放在一个函数中:

    $.getJSON("get_data.php", function(json){
json = json[0].data;
var tr ;
for (var i = 0; i < json.length; i++) {
    tr = $('<tr/>');
    tr.append("<td width='33%'><div class='clientname-text'>" + json[i].ClientName + "</div></td>");
    tr.append("<td width='33%'><div class='roomname-text'>" + json[i].RoomName + "</div></td>");
    tr.append("<td width='33%'><div class='time-text'>" + json[i].RoomFromTime + " - " + json[i].RoomToTime + "</div></td>");

 $('table').append(tr);
}

然后调用该函数,然后使用该函数再次调用setInterval。这样,该函数将立即执行,您可以毫不拖延地加载数据。

答案 1 :(得分:1)

您需要在setInterval命名函数中调用该函数,调用它,然后使用setInterval继续调用它,如下所示:

$(document).ready(function() {
    function get_data() {
      $.getJSON("get_data.php", function(json){
      json = json[0].data;
      var tr ;
      for (var i = 0; i < json.length; i++) {
          tr = $('<tr/>');
          tr.append("<td width='33%'><div class='clientname-text'>" + json[i].ClientName + "</div></td>");
          tr.append("<td width='33%'><div class='roomname-text'>" + json[i].RoomName + "</div></td>");
          tr.append("<td width='33%'><div class='time-text'>" + json[i].RoomFromTime + " - " + json[i].RoomToTime + "</div></td>");

       $('table').append(tr);
      }
      });

    }

    get_data();
    setInterval(get_data,60000)
});

答案 2 :(得分:0)

她再来一个解决方案

&#13;
&#13;
DateTime.Parse
&#13;
setInterval(function(){
   $.getJSON("get_data.php", function(json){
   json = json[0].data;
   var tr ;
   for (var i = 0; i < json.length; i++) {
      tr = $('<tr/>');
      tr.append("<td width='33%'><div class='clientname-text'>" + json[i].ClientName + "</div></td>");
      tr.append("<td width='33%'><div class='roomname-text'>" + json[i].RoomName + "</div></td>");
      tr.append("<td width='33%'><div class='time-text'>" + json[i].RoomFromTime + " - " + json[i].RoomToTime + "</div></td>");

      $('table').append(tr);
    }
  });

  return arguments.callee;
}(), 60000);
&#13;
&#13;
&#13;

setInterval 中的自我调用功能

jsfiddle链接:https://jsfiddle.net/4gkzqhgq/1/