我的代码出了问题。 AJAX调用在进入页面和刷新后从JSON数组获取信息并在我的HTML代码中根据需要放置,但问题是,在set循环(30s)中没有这样做。这是我的代码:
JavaScript的:
$(function status_ts3(){
$.ajax({
url : '/lib/ts3_stats.php',
type : 'POST',
dataType : 'json',
success : function (response) {
$('#ts3-status').replaceWith(response['server_status']);
$('#ts3-number-online').replaceWith(response['online_number']);
},
error : function() {
$('#ts3-status').replaceWith('<span class="server-offline">Offline</span>');
$('#ts3-number-online').replaceWith('<span class="online-number-ts3">0/0</span>');
},
complete: function() {
setTimeout(status_ts3, 30000);
}
})});
PHP:
$ts3 = TeamSpeak3::factory("serverquery://@xxx/?server_port=xxx");
$status = $ts3->getProperty("virtualserver_status");
$count = $ts3->getProperty("virtualserver_clientsonline") - $ts3->getProperty("virtualserver_queryclientsonline");
$max = $ts3->getProperty("virtualserver_maxclients");
$servers_ts3='<span class="server-online">' . ucfirst($status) .'</span>';
$online_number_ts3 = '<span class="online-number-ts3">' . $count . '/' . $max . '</span>';
$ajax = array(
'server_status' => $servers_ts3,
'online_number' => $online_number_ts3,
);
echo json_encode($ajax);
所以问题是,为什么它不起作用?我错过了什么或被误解了吗?我是半新手所以我不知道,非常感谢所有的帮助。
答案 0 :(得分:0)
如果我理解正确(我在标题中注意到“Periodic”一词)你想每30秒调用一次这个AJAX调用。如果是这样,您需要使用setInterval
而不是setTimeout
作为:
setTimeout(函数,毫秒) 在等待指定的毫秒数后执行一个函数。
setInterval(function,milliseconds) 与setTimeout()相同,但是连续重复执行该函数。
http://www.w3schools.com/js/js_timing.asp
如果是这种情况,您应首先设置轮询,然后定义调用AJAX的函数:
setInterval(status_ts3, 30000);
$(function status_ts3(){
$.ajax({
...
})
});
并删除complete
回调表单AJAX处理函数。