我如何制作它以便浏览器调用php页面并每隔10秒左右将结果发布到div中?
感谢。我只是在学习jquery。
答案 0 :(得分:1)
您需要定期更新程序。类似的东西:
function callMeAtInterval()
{
$.ajax({
method: 'get',
url : 'status.php',
dataType : 'text',
success: function (text) { $('#updateMe').html(text); }
});
}
//causes callMeAtInterval() to get called every 5 seconds.
var holdTheInterval = setInterval(callMeAtInterval, 5000);
jQuery的$.ajax函数获取 url 指定的资源的输出,并且成功回调允许您对结果进行一些处理,在上面的示例中:
('#updateMe').html(text);
使用从服务器返回的文本填充id updateMe
的页面元素。
答案 1 :(得分:1)
这应该有效:
function loadResults(){
$('div.to.update').load('yourpage.php')
setTimeOut(arguments.callee, 10000)
}
loadResults()
工作原理:
$('div.to.update').load('yourpage.php')
此行对'yourpage.php'进行ajax调用并使用该页面的结果填充div(请注意,调用您的页面的结果不应该是整页而只是一个片段)
setTimeOut(arguments.callee, 10000)
setTimeOut将来调度函数调用,在本例中为10秒。调用函数本身的函数,取自每个函数都可以访问的变量“arguments”。它就像一个递归函数,但延迟10秒。
最后,你第一次调用该函数来启动循环。
编辑:
如果需要稍后停止循环,也可以使用setInterval()调用该函数,只需这样做:
function loadResults(){
$('div.to.update').load('yourpage.php')
}
var interval_id = setInterval(loadResults,10000)
// Later on when you want to stop the refresh...
clearInterval(interval_id)
答案 2 :(得分:0)
值得注意的是,无论挂起的AJAX请求的进度如何,setInterval每5秒执行一次此函数(在提供的karim79示例中)。如果第一个请求需要3秒钟才能完成,setInterval将在2秒后发送下一个请求,而不是5.如果您确实希望在成功刷新和下一个请求之间有5秒钟,您可能希望在{中使用setTimeout {1}}回调函数。这看起来像这样:
success
这种方法的缺点是一个失败的setTimeout意味着该部分不会再次刷新。