使用AJAX观察SQL数据库的更改

时间:2010-05-11 18:23:36

标签: jquery sql ajax

我的数据库中有一列将随机更新。每当更新该列时,我需要刷新页面上的内容。如何使用AJAX + jQuery仅对数据库更改执行操作?

8 个答案:

答案 0 :(得分:11)

您所描述的内容通俗地称为Comet编程。 Comet描述了一组用于将内容推送到具有持久HTTP连接的网页的技术。

将使用数据库服务器中的触发器/存储过程组合启动推送。这样,无论数据更新来自何处,都会发生这种情况。

答案 1 :(得分:5)

服务器(数据库/网络)无法启动连接 - 只有客户端可以。因此,您必须轮询数据库,直到有更新。您可以创建一个检查数据库和jQuery使用的Web服务。

修改:我已经纠正了。在服务器向其“推送”数据之前,可以保持AJAX连接处于打开状态。请参阅:http://en.wikipedia.org/wiki/Reverse_Ajax

显然它真的是民意调查:http://en.wikipedia.org/wiki/Push_technology#Long_polling。如果服务器还没有要发送的任何数据,它会保持连接打开,直到它发生。它不是“纯粹”推送技术,因为客户端没有服务器连接的侦听端口。然而,效果类似。

编辑2:回到回答您的问题...您必须选择如何“轮询”网络服务。然后,Web服务必须检查数据库以查看是否有更新。检查数据库的更新可能是最棘手的,实际上取决于您的要求。您可以运行SQL查询以查看是否有任何更改,但您如何知道?您需要某种参数(通常是日期)来进行比较。如果做错了,您可能会错过一些更新或多次点击进行一次更新。 Autocracy所说的将是获得更新通知的好方法。您可以将该列表保留在数据库,内存等中,并在客户端获取更新时将其清除。

答案 2 :(得分:5)

使用javascript的setinterval函数进行轮询并检查更新后的dababase字段的值

查看以下链接以获取更多详细信息http://www.elated.com/articles/javascript-timers-with-settimeout-and-setinterval/

答案 3 :(得分:3)

我在聊天时几乎做同样的事情,每隔xx秒重新加载一个php脚本。

看起来像这样: 如果不使用jquery.noconflict ..替换j为$。

j(".chatref").everyTime(3000,function(i){
    j.ajax({
       url: "chatx.php",
       cache: false,
       success: function(updated){
           j(".chatref").html(updated);
           ...do stuff..
       }
   });

这是一个非常好的方法,我认为:)如果你想发送vars到chatx.php只是添加?php& x = 1& y = 2?>

答案 4 :(得分:2)

将特殊存储过程挂钩到数据库中,以便在修改后向应用程序发出警报。您需要一个自定义模块和正确的触发器语句。

您的其他选择是投票。

答案 5 :(得分:1)

您必须不断轮询具有数据库值的页面。

答案 6 :(得分:1)

我建议创建一个HTML页面,该页面使用setIntreval()重复对查询数据库的PHP脚本进行AJAX调用。您可以使用JSON和PEAR使任务更容易一些。

参考链接:

答案 7 :(得分:0)

您基本上必须不断轮询服务器以更改数据库。服务器无法调用客户端,因此客户端只需要不断询问服务器是否有更改。