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

发布于 2024-09-11 14:40:21 字数 327 浏览 6 评论 0原文

有人可以解释如何创建一个使用数据库中的值自动更新的 .php 页面吗?对于这样的事情使用 AJAX 是最好的吗?我想要这段 PHP 代码,但我希望每当添加或更改“values01”时都会更新页面,而无需刷新页面。
$query = "从用户中选择值01,其中用户名='$username'";
$结果 = mysql_query($query);
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
echo nl2br("{$row['values01']}");
}

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

Can someone explain how to create a .php page which auto-updates with values from a database? Would using AJAX be best for something like this? I want this PHP code, but I want the page to be updated whenever 'values01' is added to or changed, without having to refresh the page.
$query = "SELECT values01 FROM users WHERE username='$username'";
$result = mysql_query($query);
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
echo nl2br("{$row['values01']}");
}

Any help would be appreciated! :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

唠甜嗑 2024-09-18 14:40:21

您所描述的是来自网络服务器的推送通知。不幸的是,我还没有找到一种可靠的方法来进行传统的推送,即 Web 服务器将发起与客户端的连接(根据我有限的研究,似乎有关于 http 标准支持推送的建议,但是,它并没有看起来还没有出现过广泛采用的标准)。然而,这可以通过更迂回的方式来完成。

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

  1. 浏览器连接到页面,加载数据库的当前“状态”。会话变量(我们称之为 $_SESSION['currentState'])与数据库的起始状态一起保存。客户端浏览器上的 JavaScript 计时器开始计时(假设计时器时长为 10 秒)。
  2. 一旦计时器到期,就会对服务器上的脚本进行 AJAX 调用。我们将该脚本称为“updateValues.php”。 updateValues.php 检查数据库的新状态。如果数据库与 $_SESSION['currentState'] 不同,我们会以某种好的形式(json、xml 等)返回所做的任何更改,并使用新状态更新 $_SESSION['currentState']。如果没有变化,我们会回复相应的内容。
  3. 收到数据后,浏览器会执行一些 JavaScript,如果数据库发生更改,则更新浏览器中的呈现,然后重新启动计时器。
  4. goto 2.

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

What you are describing would be a push notification from the web server. Unfortunately, I have not found a reliable way to do a traditional push, where the web server would initiate the connection with the client (from my limited research, it appears that there were proposals for the http standard to support push, however, it doesn't look like a widely adopted standard ever emerged). However, this can be done in a bit more roundabout way.

There is a way around the push limitation that is typically used:

  1. Browser connects to the page, loads up the current "state" of the database. A session variable (lets call it $_SESSION['currentState']) is saved with the starting state of the database. A javascript timer on the client's browser starts ticking down (lets just say that timer is 10 seconds long).
  2. Once the timer expires, an AJAX call is made to a script on the server. Lets call that script "updateValues.php". updateValues.php checks the new state of the database. If the database differs from $_SESSION['currentState'], we return whatever changes have been made, in some nice form (json, xml, etc..), and update $_SESSION['currentState'] with the new state. If there was no change, we reply with something to that extent.
  3. Upon receiving the data, the browser executes some javascript that then updates the rendering in the browser if changes have been made to the db, and then restarts the timer.
  4. goto 2.

The only thing you are missing here from a typical push notification, is the 10-second (or whatever you choose for your timer) lag.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文