Javascript 如何自动刷新页面的某个部分
我有一个页面的一部分包含实时数据,我想每隔几分钟刷新一次页面,但这是不对的,因为页面的其他元素 我怎么做?我可以用什么语言来做这件事,什么容易做什么不容易,什么好用什么不好用。可能是一些清晰的教程,甚至是代码示例 我可以用PHP这样的语言来实现这一点,但我不知道从哪里开始。通过一点研究,我发现Javascript和Ajax似乎是实现这一点的标准,但我对这些语言的了解还不够 谢谢你的时间和帮助 哦,显示的数据来自数据库,如果有帮助的话Javascript 如何自动刷新页面的某个部分,javascript,php,Javascript,Php,我有一个页面的一部分包含实时数据,我想每隔几分钟刷新一次页面,但这是不对的,因为页面的其他元素 我怎么做?我可以用什么语言来做这件事,什么容易做什么不容易,什么好用什么不好用。可能是一些清晰的教程,甚至是代码示例 我可以用PHP这样的语言来实现这一点,但我不知道从哪里开始。通过一点研究,我发现Javascript和Ajax似乎是实现这一点的标准,但我对这些语言的了解还不够 谢谢你的时间和帮助 哦,显示的数据来自数据库,如果有帮助的话 再次感谢。您无法在PHP中真正执行页面组件的实时刷新,AJAX
再次感谢。您无法在PHP中真正执行页面组件的实时刷新,AJAX是最常用的方法(异步Javascript和Xml)-它使用Javascript轮询其他脚本(可以是.PHP页面),然后根据请求返回预定义的输出-此输出可以是要注入页面的内容,或数据,这些数据随后可由页面解释用于其他操作 在本例中,您的.php页面的头部将包含JS(javascript),无论是链接的还是内联的,其中将包含启动AJAX请求的详细信息——即,启动AJAX请求的频率或触发时间(按钮按下等)、通过什么方式(POST或GET)、发送什么(您希望的任何其他变量)、目标脚本是什么(将处理请求并输出所需内容/数据的脚本),以及收到响应时应执行的操作(即,页面上的哪个元素应随响应更新) 关于AJAX: 最简单的开始方式可能是使用一个预先存在的Javascript库,比如无处不在的jQuery(jQuery.com),它有成千上万的教程,尽管您需要进行一些Javascript编程,但该库意味着您可以依靠相当简单的语法来完成(如
$('#myelement')。加载('mypage.php')
):
简单来说:
这真是个大问题 最常见的方法是使用AJAX,但也可以使用javascript数据库(从未使用过它,所以我不能真正谈论它)
无论如何,最简单的方法是使用JQUERY。最简单的方法甚至不涉及PHP或JavaScript。您可以使用纯HTML中的
来完成。iframe加载带有适当刷新标题的HTML或PHP页面,并刷新自身
HTML主页面:
<html>
<head></head>
<body>
static content
<iframe id='dynamic-content' src='refreshing.php' />
</body>
</html>
静态内容
刷新.php页面:
<html>
<head>
<!-- refresh every 5 seconds -->
<meta http-equiv="refresh" content="5">
</head>
<body>
dynamic content
</body>
</html>
动态内容
请注意,
不鼓励对整个页面进行常规刷新,但在iframe内部使用是非常安全的,iframe必须不断刷新自身。您可以使用诸如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*/
您可以使用iFrame进行特定的刷新。因此,这不需要像jquery.js这样的任何东西??有没有可能使用一点php来显示输出?我是否只在“path/to/database.php”中显示输出?或者它是否返回到脚本中,我将不得不使用innerhtml?再次感谢您的帮助。是的,您确实需要jquery,如第一部分所述您可以在自己的网站www.jQuery.com上找到有关使用jQuery的详细信息,以及
$(“#myDiv”).load('path/to/databasepage.php')的内容
does本质上与innerHTML相同。基本上,它在后台访问页面,页面在数据库上运行一些代码,这些代码可以返回从数据库中提取的一组结果,并使用myDiv
作为页面周围的一种框架来显示。为了说明这一点,您可以更改路径/t的内容o/databasepage.php
包含以下行
。接下来,将间隔设置为:var interval=setInterval(refresh_box(),1000);
-这会让您对其工作原理有一个很好的了解。您还可以访问页面路径/to/databasepage.php
,然后按刷新按钮-这正是$(“#myDiv”).load(…
正在执行,但唯一的区别是它自动将其加载到myDiv
容器中。简单。我做了一件愚蠢的事情,但我并不自豪,我忘记了一个结尾)“很抱歉……哈哈哈,还有一个问题,出于某种原因,它没有刷新输出,有什么想法吗?如果iFrame的高度不需要动态更新以反映iFrame中的动态内容,这是一个不错的选择。如果您知道固定高度,或者您可以计算一次并将其传递到父页面,这一切都很好。但是如果你想要一个具有动态/变化高度的iFrame,请小心。CSS不支持这一点,试图围绕这一巨大的差距进行开发的麻烦是一大袋伤害和挫折。
// assuming you have a clickable element
// (typically a button or so) id called 'stop_refresh'
$("#stop_refresh").click(function(){
clearInterval(interval);
}