【问题标题】:how to update content automatically without reloading webpage using php/ajax?如何在不使用 php/ajax 重新加载网页的情况下自动更新内容?
【发布时间】:2015-01-24 11:58:25
【问题描述】:

我正在尝试使用 PHP 创建一个拍卖工具。我遇到的问题(我很欣赏这是一个基本问题,但我需要澄清)是我不明白如何在每个用户屏幕上自动更新“拍卖价格”,而无需他们采取任何行动或不引起完全重新加载页面。

到目前为止,我了解 Ajax 已用于执行此操作,但如果有人能指出我正确的方向或任何有用的材料。到目前为止,我的项目计划是使用 PHP 和 JavaScript,因此任何解决方案都需要与这些语言兼容。

注意:我使用的是 MySQL 数据库。

【问题讨论】:

  • 您可以使用元标记,但它也会重新加载页面:en.wikipedia.org/wiki/Meta_refresh
  • Here you go。您可以使用setInterval()注册一个定时功能。
  • 你可以使用 AngularJS 和它的数据绑定功能。喜欢:docs.angularjs.org/tutorial/step_04
  • 您更多的是寻找客户端和服务器之间的双向通信,而不是 ajax 的通常目的。你最好的选择是 websockets,但实现服务器端比长轮询 ajax 复杂得多。你可以阅读:stackoverflow.com/questions/10028770/…
  • websocket 是你最好的选择,原因有很多,是的,这是一个令人生畏的过程,但你可以使用调用 pusher pusher.com 的东西,它基本上是一项为你和你做所有疯狂工作的服务只需在js & php 中添加一些代码即可将数据绑定到您将通过流式传输更新的通道/管道。

标签: javascript php jquery html ajax


【解决方案1】:

你问的那个问题有很多可能的答案,它们可以填满一本书。

执行此操作的最简单方法是使用 setInterval() 函数和 AJAX 调用的组合每隔几秒进行一次 ajax 调用。你基本上每隔几秒就会发出一个 AJAX 请求:

setInterval(function(){
$.get( "anyChanges.php", function( data ) {
  //do something with the returned data. Maybe update a table or something
});
}, 3000);

在服务器端anyChanges.php 立即返回一些数据,例如确认某些内容已更改以及新数据。

长轮询是 Google 和其他公司的做法。这与上面的示例相同。区别在于服务器端。 anyChanges.php 不会立即返回,脚本会保持连接打开,直到有一些新的更改并返回它们。如果使用长轮询,通常将间隔设置为更长,例如 30 秒。

在我看来,最好的方法是 WEB Sockets。这是一项非常新的技术。使用 Web 套接字,您可以创建到服务器的双向连接。这意味着服务器可以简单地向客户端发送数据,而不必每隔几秒就请求新数据。在 PHP 中,使用 web sockets 有点困难(或者我听说过),但你可以试一试。如果您选择 web sockets,请先尝试了解它们: tutsplus tutorial

这个库会很有帮助: socketo.me

【讨论】:

    【解决方案2】:

    PHP/Ajax 示例:

    在此示例中,您有 index.htmlrecord_count.php 文件

    代码如下:

    index.html 包含加载record_count.php 的html 代码和javascript 调用

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script>
    <script type="text/javascript">
       var auto_refresh = setInterval(
          function ()
          {
             $('#load_tweets').load('record_count.php').fadeIn("slow");
          }, 10000); // refresh every 10000 milliseconds
    </script>
    
    <body>
         <div id="load_tweets"> </div>
    </body>
    

    record_count.php 有 php 代码

    <?php
    echo "some code or variable here";
    ?>
    

    您可以更改 javascript 间隔以满足您的需要

    我会把博客链接留给你作为参考:9lessons

    【讨论】:

      【解决方案3】:

      当我制作交互式显示时,必须立即切换页面,然后我创建页面而不刷新。

      我的方法是这样的:

      1. 我有一个 index.html,其中包含所有结构(页面)以及所有必要的 html 标签。
      2. javascript/typescript 从 CMS(例如 Kirby)加载 json,其中包含有关文本和图像链接的所有信息。
      3. 现在加载 json 时,我只需要通过显示/隐藏或创建/删除 html 元素在页面之间切换。所有数据和文本均由 javascript 加载。

      有一些缺点,可以修复,例如地址栏中每个页面的链接。在这种情况下,您需要在页面切换的地址栏中添加历史管理并更改 url。

      【讨论】:

        猜你喜欢
        • 2010-12-28
        • 1970-01-01
        • 2015-02-24
        • 1970-01-01
        • 2018-11-26
        • 1970-01-01
        • 2018-10-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多