Coldfusion - 数据库记录更新时刷新页面
Coldfusion - Refreshing Page When A Database Record Updates
美好的一天,
让我描述一下我的问题:
场景:
- 用户 1 有一个 coldfusion 网页,其中包含 6 个警报作为使用数据库填充的 html 元素。用户 1 不断监视此页面的更改。
- 另一台计算机(不同会话)上的用户登录管理控制台并添加第 7 个元素并将其插入数据库。
- 数据库包含一个字段,一旦添加警报并将其插入数据库,该字段就会从 0 变为 1。
- 用户 1 的网页不必动态刷新或更新第 8 个警报。
问题:
- 我正在努力 运行 一个异步循环,该循环永久查询数据库以获取告诉它有更改的记录,同时不冻结页面的其余部分。
解决方案:
- 我需要 运行 cfquery 来检查数据库中的 isUpdated 字段。
- cfquery 需要每分钟 运行。
- 一旦 cfquery returns 为 1,页面就会刷新,这反过来也会填充新警报。
可以通过 sockets
完成,您不必每分钟检查一次新记录的可用性。
你也可以用 javascript/jquery
:
<script>
var lastAlert = '#lastAlert#'; //last at the time of loading the page
setInterval(function() {
lastAlert = isUpdated(lastAlert);
}, 60000);
function isUpdated(lastAlert){
res = lastAlert;
$.ajax({
url: 'checkAlerts.cfm', //in this file do check for changes in the database. should return the number of the last alert
type: 'POST',
data: {lastAlert:lastAlert},
cache: false,
success:function(res){
if(res > lastAlert){
//your code if there is a new entry
alert('a new entry has been added');
}
}
});
return res;
}
</script>
我没有检查代码!但我希望你明白如何进行。
美好的一天,
让我描述一下我的问题:
场景:
- 用户 1 有一个 coldfusion 网页,其中包含 6 个警报作为使用数据库填充的 html 元素。用户 1 不断监视此页面的更改。
- 另一台计算机(不同会话)上的用户登录管理控制台并添加第 7 个元素并将其插入数据库。
- 数据库包含一个字段,一旦添加警报并将其插入数据库,该字段就会从 0 变为 1。
- 用户 1 的网页不必动态刷新或更新第 8 个警报。
问题:
- 我正在努力 运行 一个异步循环,该循环永久查询数据库以获取告诉它有更改的记录,同时不冻结页面的其余部分。
解决方案:
- 我需要 运行 cfquery 来检查数据库中的 isUpdated 字段。
- cfquery 需要每分钟 运行。
- 一旦 cfquery returns 为 1,页面就会刷新,这反过来也会填充新警报。
可以通过 sockets
完成,您不必每分钟检查一次新记录的可用性。
你也可以用 javascript/jquery
:
<script>
var lastAlert = '#lastAlert#'; //last at the time of loading the page
setInterval(function() {
lastAlert = isUpdated(lastAlert);
}, 60000);
function isUpdated(lastAlert){
res = lastAlert;
$.ajax({
url: 'checkAlerts.cfm', //in this file do check for changes in the database. should return the number of the last alert
type: 'POST',
data: {lastAlert:lastAlert},
cache: false,
success:function(res){
if(res > lastAlert){
//your code if there is a new entry
alert('a new entry has been added');
}
}
});
return res;
}
</script>
我没有检查代码!但我希望你明白如何进行。