代码点火器:从视图调用模型 - 数据库内容似乎冻结
Codeigniter: calling model from view - DB content seems frozen
我正在尝试在我的 CI 视图中使用 javascript 每 2 秒更新一次(无需刷新)数据模型,对于我的用例,其他用户可以更改数据库内容。
<script type="text/javascript">
var refreshFunc = setInterval(function() {
<?php
$this -> load -> model('m_cube', '', TRUE);
$stamp = $this -> $m_cube -> stamp();
?>
var stamp = "<?php echo $stamp; ?>";
console.log(stamp);
}, 2000);
refreshFunc;
</script>
我正在使用 JS setInterval
来创建 2 秒循环,并调用 CI 模型从 Postgresql 数据库中检索数据。在简化的代码示例中,它只是要求数据库提供时间戳。问题是写入控制台的时间戳没有更新 - 有些东西卡住了。
2013-10-21 14:35:54.168-04
2013-10-21 14:35:54.168-04
2013-10-21 14:35:54.168-04
...
查询实际数据表时的行为相同 - 它不返回最新值。
为什么模型访问数据库的"冻结"版本?
它不是卡住或"冻结",而是你对之前和之后的事情有点困惑。
我没有看到你使用AJAX,所以当你的php被处理时(即,从数据库获取并分配给$stamp的数据),页面 - html,css和javascript - 尚未由服务器生成和服务,也不由浏览器输出。
这意味着在 setInterval 中,您始终具有相同的值,该值已经生成,因此您不断重新打印相同的字符串。
如果你想要继续更新,你需要不断向服务器请求数据,这就是AJAX(异步JavaScript和XML)可以很方便的地方,因为它作为与主请求分开的请求运行,所以你可以在两个不同的"级别"上工作并获取内容,而页面的其余部分保持静态(已经提供和输出)。
如果你使用的是jQUery,你可以看看$.ajax(),这使得这种事情变得非常容易。
当此脚本在服务器上运行时,它会获取模型数据并将<?php ?>
标记替换为结果。因此,当涉及到客户端浏览器时,它不会每 2 秒联系一次服务器,而是每 2 秒记录一次stamp
值。如果你想更新它,你应该考虑使用Ajax技术。
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 在哪里使用名为“;冻结”;
- 如何通过php页面将数据库值检索到jquery自动完成框中
- 使用javascript从数据库中添加表
- 通过CSV文件上载更新数据库表
- 平均值:无法将数据更新到数据库
- 如何使用 Angular JS 将数据保存在数据库中
- Rails-JQueryUIAutcomplete和AJAX不工作,可以't连接到数据库
- For循环冻结Javascript
- 在谷歌地图上绘制位置数据库
- PHP:显示sqlite数据库中的html格式数据,使用tinymce保存
- 将地理编码结果转换为php变量以发布到mysql数据库
- 从数据库中检索字段,而不模拟它们
- javascript:将数据库中的数据插入到html5文本字段中
- 从数据库中获取数据并插入JavaScript变量
- JavaScript,PHP-用JavaScript将多个数据库记录发送到变量或表
- 为什么继续;语句冻结浏览器
- 从MySQL数据库中获取输入数据需要两次页面刷新
- 在cordova android应用程序中连接数据库
- 代码点火器:从视图调用模型 - 数据库内容似乎冻结