2017-07-31 130 views
1

我有一个脚本从另一个脚本调用一些json数据,但页面加载时会有延迟。我试着定位“setInterval(function)”,但是当脚本第一次运行时,我无法获取数据。JQuery加载页面加载json数据然后每60秒调用json数据

我是否正确设置了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); 
}); 

非常感谢您的时间。

+0

您可以检查'get_data.php'文件返回正确的JSON数据? –

回答

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) 
}); 
+0

完美,非常感谢。 – DCJones

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。这样该函数将立即执行,并且您将立即获得数据加载。

+0

嗨,哪个功能? – DCJones

+0

无论你想要什么名称的功能。这取决于你。 – Difster

+0

@ CumminUp07你有什么想法我可以改变我的脚本使用'append'到'html()'。在getJSON调用被触发时,数据没有得到更新。 – DCJones

0

她你去多了一个解决方案

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);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

这是一个自调用函数内部setInterval

的jsfiddle链接:​​