javascript - 如何在不使用 php/ajax 重新加载网页的情况下自动更新内容?

标签 javascript php jquery html ajax

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

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

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

最佳答案

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

执行此操作的最简单方法是每隔几秒使用 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 套接字。这是一项非常新的技术。使用网络套接字,您可以创建到服务器的双向连接。这意味着服务器可以简单地向客户端发送数据,而无需每隔几秒请求一次新数据。在 PHP 中,使用网络套接字有点困难(或者我听说),但您可以试一试。如果您选择网络套接字,请先尝试了解它们: tutsplus tutorial

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

关于javascript - 如何在不使用 php/ajax 重新加载网页的情况下自动更新内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28125226/

相关文章:

javascript - 如何将不同的局部 View 加载到 mvc 4 中的 Bootstrap 模式

javascript - 更新 MYSQL 表给出成功消息,但不更新表

php - Laravel 数据表不返回 html 链接

PHP 字符串连接(一个来自变量,另一个来自三元运算符)给出意想不到的结果

jquery - 使用向上/向下箭头选择 div

jquery Accordion - 显示所有如果 https?

javascript - 左侧可滚动内容 - 右侧粘性图像 - 滚动上有事件元素

javascript - 无法将上传文件数组发送到 Laravel 中的 Controller

javascript - 这个循环是什么?

javascript - 将 DOM 元素的属性与自定义属性名称一起使用是个好主意吗