代码之家  ›  专栏  ›  技术社区  ›  Joey Morani

使用AJAX自动更新包含数据库值的页面?

  •  3
  • Joey Morani  · 技术社区  · 15 年前

    有人能解释一下如何创建一个用数据库中的值自动更新的.php页面吗?对于这样的事情,使用AJAX最好吗?我想要这段PHP代码,但我希望每当添加或更改“values01”时页面都会更新,而不必刷新页面。
    $query = "SELECT values01 FROM users WHERE username='$username'";
    $result = mysql_query($query);
    while($row = mysql_fetch_array($result, MYSQL_ASSOC))
    {
    echo nl2br("{$row['values01']}");
    }

    任何帮助都将不胜感激!:)

    1 回复  |  直到 15 年前
        1
  •  2
  •   MarkD    15 年前

    您描述的是来自web服务器的推送通知。不幸的是,我还没有找到一种可靠的方法来进行传统的推送,即web服务器将启动与客户端的连接(根据我有限的研究,似乎有人建议使用http标准来支持推送,但是,它看起来不像是一个被广泛采用的标准)。然而,这可以用一种更迂回的方式来实现。

    有一种方法可以绕过通常使用的推送限制:

    1. 浏览器连接到页面,加载数据库的当前“状态”。会话变量(称之为$\u session['currentState'])与数据库的起始状态一起保存。客户端浏览器上的javascript计时器开始滴答滴答地响起来(假设计时器有10秒长)。
    2. 一旦计时器过期,将对服务器上的脚本进行AJAX调用。让我们把这个脚本称为“updateValues.php”。php检查数据库的新状态。如果数据库与$\u SESSION['currentState']不同,我们将以某种良好的形式(json、xml等)返回所做的任何更改,并用新状态更新$\u SESSION['currentState']。如果没有变化的话,我们的答复是这样的。
    3. 转到2。

    在这里,典型的推送通知中唯一缺少的是10秒(或您为计时器选择的任何时间)延迟。

    推荐文章