在数据库中进行更改时加载页面 - 可能吗?

时间:2011-12-01 22:53:01

标签: jquery ajax database reload

我只是想知道当数据库在某种变化时是否可以用jQuery或AJAX重新加载当前页面?如果可以,我如何在我的网站上实现它?

证明我的意思:让我们说一位访客位于网站的首页。当我发布一个新的博客帖子时,访问者在页面上闲置。当页面在数据库中看到新的博客帖子时,页面将使用jQuery或AJAX重新加载,并显示访问者的新帖子。 Simliar函数是setTimeout(),但如果我在同一页面上有100个活跃访问者,我不想强​​调服务器。

提前致谢。

3 个答案:

答案 0 :(得分:1)

在页面上设置javascript var MyItemID = get_file_contents(notice.html),对setTimeout()的请求内容使用notice.html,并将结果与​​您的MyItemID

进行比较

每当您更新数据库时,都会通过mysql_insert_id()获取最大条目的ID,并将其放入notice.html

很简单,是吗? ;)

答案 1 :(得分:0)

AFAIK你不能让服务器在服务器事件上通过HTTP推送到客户端(我可能在这里错了),如果你的客户支持它,你可以使用SPDY protocol(我认为只有Chrome浏览器支持) )。

所以你唯一能做的就是检查最新记录是否与pageload上的记录相同。您必须每X秒/分钟检查一次服务器。

你可以通过这样做来实现这一目标:

  1. 在pagerequest上存储页面某处的最新记录的ID(例如隐藏输入)。
  2. 写一个小的serverscript只返回最新记录的ID(普通)
  3. 在客户端上比较它们,如果它们不匹配,则对新内容执行完整的ajax请求
  4. 服务器唯一需要做的事情(每个客户端每个X秒)是在数据库中查询最新记录并输出它。您还可以检查服务器(更多服务器负载)或通过JSON(也更多服务器负载)输出它。

    如果没有这些检查,我认为你无法做到。

答案 2 :(得分:0)

设置javascript

var MyItemID = get_file_contents(notice.html)

在页面上,对setTimeout()的请求内容使用notice.html,并将结果与​​MyItemID

进行比较

每次更新数据库时,都会通过mysql_insert_id()获取最高条目的ID,并将其放入notice.html