简单的JQuery ajax脚本问题

时间:2009-05-29 01:55:29

标签: jquery ajax

我如何制作它以便浏览器调用php页面并每隔10秒左右将结果发布到div中?

感谢。我只是在学习jquery。

3 个答案:

答案 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意味着该部分不会再次刷新。