如何自动刷新页面的一部分

时间:2011-10-05 11:24:59

标签: javascript php

我有一个页面的一部分,其中包含实时数据,我想每隔几分钟刷新一次页面,但由于页面的其他元素,这是不正确的。

我该怎么办?我可以用什么语言来做这件事,什么是容易做什么,什么不做,什么做得好,什么做不好。也许是一些清晰的教程甚至是代码示例。

我会像PHP一样生活,但是没有线索从哪里开始,从一些研究我看到Javascript和Ajax似乎是这个的标准,但我对这些语言的了解没有达到标准。

感谢您抽出时间并帮助别人。

哦,如果有任何帮助,显示的数据来自数据库。

再次感谢。

4 个答案:

答案 0 :(得分:16)

您可以使用jQuery等Javascript库,并执行以下简化示例:

$("document").ready(function(){
  var interval = setInterval(refresh_box(), 60000);
  function refresh_box() {
    $("#myDiv").load('path/to/databasepage.php');
  }
} /*<= The closer ) bracket is missing in this line*/

并在path/to/databasepage.php页面中,您可以选择查询并回显结果。

这样做会设置超时以每隔60秒(即60,000毫秒)调用一个函数(在本例中为refresh_box())并将path/to/databasepage.php中的数据加载到您的div中id myDiv

修改

如果要停止自动刷新,可以通过执行以下操作绑定元素以清除间隔:

// assuming you have a clickable element 
// (typically a button or so) id called 'stop_refresh'
$("#stop_refresh").click(function(){
  clearInterval(interval);
}

答案 1 :(得分:5)

最简单的方法甚至不涉及PHP或JavaScript。您可以使用纯HTML中的<iframe>来完成此操作。 iframe使用适当的刷新标头加载HTML或PHP页面,并自行刷新。

主HTML页面:

<html>
<head></head>
<body>
   static content

    <iframe id='dynamic-content' src='refreshing.php' />
</body>
</html>

refresh.php页面:

<html>
<head>
  <!-- refresh every 5 seconds -->
  <meta http-equiv="refresh" content="5">
</head>
<body>
  dynamic content
</body>
</html>

请注意,不鼓励<meta http-equiv="refresh">一般刷新整个页面,但在iframe中使用非常安全,iframe必须不断刷新。

答案 2 :(得分:3)

你无法真正为PHP中的页面组件执行实时刷新,AJAX是最常用的手段(异步Javascript和Xml) - 它使用Javascript轮询其他脚本(可以是.php页面),然后返回基于的预定义输出请求 - 此输出可以是注入页面的内容,也可以是您的页面可以解释为另一个操作的数据。

在这种情况下,您的.php页面将包含头部的JS(javascript),无论是链接还是内联,其中包含启动AJAX请求的详细信息 - 即,频率或触发的按钮(按下按钮等),通过什么方式(POST或GET),发送的内容(您希望的任何其他变量),目标脚本是什么(将处理请求并输出所需内容/数据的脚本),以及响应时要执行的操作收到(即页面上的哪个元素应该用响应更新)。

关于AJAX的一点点:

http://webdesign.about.com/od/ajax/a/aa101705.htm

http://webtrends.about.com/od/web20/a/what-is-ajax.htm

可能最简单的方法是使用一个预先存在的Javascript库,如无处不在的jQuery(jquery.com),有成千上万的教程,虽然你需要做一些Javascript编程,库意味着您可以依赖相当简单的语法(就像$('#myelement').load('mypage.php')一样简单):

http://net.tutsplus.com/tutorials/javascript-ajax/5-ways-to-make-ajax-calls-with-jquery/

http://www.devirtuoso.com/2009/07/beginners-guide-to-using-ajax-with-jquery/

http://www.sitepoint.com/ajax-jquery/

http://yensdesign.com/2008/12/how-to-load-content-via-ajax-in-jquery/

简单来说:

  1. 您的php页面包含需要更新的元素(第A页)
  2. 构建另一个PHP脚本,输出您想要“刷新”的内容,例如每次运行时都会发布最新的新闻报道(第B页)
  3. 链接到标题部分(第A页)中的jQuery库
  4. 在页面A的标题部分写一个简单的jquery函数,它表示每X秒/分钟,运行一个AJAX请求来获取页面B的内容并插入到页面A中的元素(DIV)中

答案 3 :(得分:0)

这真是个大问题。

最常见的方法是使用AJAX,但你也可以使用javascript数据库作为TaffyDB - The JavaScript Database(从未使用它,所以我真的不能谈论它。)

无论如何,最简单的方法是使用JQUERY。