使用AJAX观察SQL数据库的变化

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

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

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

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

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

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

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

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

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

我在聊天时几乎做同样的事情,每隔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?>

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

你的其他选择是投票。

您将不得不连续轮询具有数据库值的页面。

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

参考链接:

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