Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何自动刷新页面的某个部分_Javascript_Php - Fatal编程技术网

Javascript 如何自动刷新页面的某个部分

Javascript 如何自动刷新页面的某个部分,javascript,php,Javascript,Php,我有一个页面的一部分包含实时数据,我想每隔几分钟刷新一次页面,但这是不对的,因为页面的其他元素 我怎么做?我可以用什么语言来做这件事,什么容易做什么不容易,什么好用什么不好用。可能是一些清晰的教程,甚至是代码示例 我可以用PHP这样的语言来实现这一点,但我不知道从哪里开始。通过一点研究,我发现Javascript和Ajax似乎是实现这一点的标准,但我对这些语言的了解还不够 谢谢你的时间和帮助 哦,显示的数据来自数据库,如果有帮助的话 再次感谢。您无法在PHP中真正执行页面组件的实时刷新,AJAX

我有一个页面的一部分包含实时数据,我想每隔几分钟刷新一次页面,但这是不对的,因为页面的其他元素

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

我可以用PHP这样的语言来实现这一点,但我不知道从哪里开始。通过一点研究,我发现Javascript和Ajax似乎是实现这一点的标准,但我对这些语言的了解还不够

谢谢你的时间和帮助

哦,显示的数据来自数据库,如果有帮助的话


再次感谢。

您无法在PHP中真正执行页面组件的实时刷新,AJAX是最常用的方法(异步Javascript和Xml)-它使用Javascript轮询其他脚本(可以是.PHP页面),然后根据请求返回预定义的输出-此输出可以是要注入页面的内容,或数据,这些数据随后可由页面解释用于其他操作

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

关于AJAX:

最简单的开始方式可能是使用一个预先存在的Javascript库,比如无处不在的jQuery(jQuery.com),它有成千上万的教程,尽管您需要进行一些Javascript编程,但该库意味着您可以依靠相当简单的语法来完成(如
$('#myelement')。加载('mypage.php')
):

简单来说:

  • 您的php页面包含需要更新的元素(第A页)
  • 构建另一个php脚本,每次运行时输出您想要“刷新”的内容,例如最新的新闻故事(第B页)
  • 标题部分(A页)中jQuery库的链接
  • 在a页的页眉部分编写一个简单的jquery函数,它表示每X秒/分钟运行一次AJAX请求,以获取B页的内容并插入a页中的元素(DIV)

  • 这真是个大问题

    最常见的方法是使用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);
    }