我是AJAX和PHP的新手,但我知道PHP是一种服务器端脚本语言,因此除非用户刷新页面或用户提交表单,否则不会对html进行任何更改。因此,我认为当Facebook用户收到消息时,<span id="mercurymessagesCountValue">
中的号码会发生变化
与AJAX有关。
这是我的猜测:
当检测到另一个用户[发件人]已将新行插入特定表并且每列包含不同数据时,将触发数字更改:时间,消息,发件人ID和接收者ID
所以这是我的问题......在这种情况下,如何检测数据库中的更改以及如何触发javscript [或其他东西]来更改html?或者,如果我错了......我能知道Facebook是如何做到的吗?非常感谢!!
答案 0 :(得分:4)
答案 1 :(得分:1)
让我在这里为你澄清一些事情, AJAX只是浏览器发送的一种请求,用于动态地从另一个页面获取数据。在Facebook的情况下,他们实际上有一种特殊类型的连接到客户端计算机,以保持页面“活着”。这样,他们可以将动态更新推送到客户端,而无需不断地轮询/刷新服务器上的单个页面(会产生大量负载)。
所以,让我们假装,他们不断刷新服务器上的页面,以确定有多少通知未读 -
客户 - &gt; Ajax Call - &gt;服务器PHP页面 - &gt; Ajax Return - &gt;客户端
因此,按顺序,客户端发送对服务器生成的页面的请求。 然后,服务器的php页面将计算该特定用户的数据库中“未读”通知行的数量。然后它将以普通html输出未读行的数量。
客户端然后从Ajax调用中收到这个纯HTML,并使用新的未读通知数更新DOM
请注意:这不是facebook的工作方式,但如果您不熟悉动态编码,它就是如何设置自己的基本通知系统的一个很好的例子。
答案 2 :(得分:0)
我的猜测是,请求经常通过Javascript从客户端发送到主机,询问“自从我上次询问以来有什么新的事情发生?”。答案由服务器响应,使用PHP,如果是,则新数据在响应中传递,JavaScript使用新数据更新DOM(HTML),如显示红旗等。
答案 3 :(得分:-2)
的javascript:location.load(T); (t =时间间隔) 我想,每隔几秒刷新一个页面就会弹出收到的通知.. !!