Php AJAX仅在数据库中发生更改时更新-Codeigniter
我试图只更新网页时,他们的更新在数据库中,但我不知道如何做到这一点 我考虑比较存储在数据库中的ID,因为每个ID都是唯一的,所以如果我制作某种表达式,将AJAX存储或拾取的当前数组与数据库中的ID进行比较。但我不确定如何比较ID并检查它们是否是新的更新 任何帮助都将不胜感激 控制器Php AJAX仅在数据库中发生更改时更新-Codeigniter,php,javascript,ajax,codeigniter,Php,Javascript,Ajax,Codeigniter,我试图只更新网页时,他们的更新在数据库中,但我不知道如何做到这一点 我考虑比较存储在数据库中的ID,因为每个ID都是唯一的,所以如果我制作某种表达式,将AJAX存储或拾取的当前数组与数据库中的ID进行比较。但我不确定如何比较ID并检查它们是否是新的更新 任何帮助都将不胜感激 控制器 public function insertJSON() { $this->load->model("values"); $queryresults = $this
public function insertJSON()
{
$this->load->model("values");
$queryresults = $this->values->getDb();
$id = array();
$arr = array();
$arr2 = array();
foreach($queryresults as $row)
{
$id[] = $row->id;
$arr[] = $row->post;
$arr2[] = $row->img;
}
$data = array();
$data[] = $id
$data[] = $arr;
$data[] = $arr2;
echo json_encode($data);
}
看法
$('#getdata')。单击(函数(){
$.ajax({
url:“”,
async:false,
类型:“POST”,
成功:功能(数据){
//我想我可以做点什么
如果(数据库中的data.change)执行bla bla
变量id=数据[0];
var arr=数据[1];
var arr2=数据[2]
}
})
});
有一种简单的方法可以做到这一点。
创建会话变量并为其分配最后一个id。然后在页面上的隐藏输入上获取此会话id。
现在,当您发送ajax请求时,您可以获取隐藏输入的值,并将其发送到控制器函数,在该函数中您可以查询最后一个id。如果查询中的最后一个id不等于会话id,则应回送其他明智的回送0。在Ajax请求中,检查响应是否来自控制器,它大于0,用新的ID更改页面。使用Ajax < /P>更新会话ID。您应该查看事件驱动的服务器端框架,如SoCKE.IO。您也可以考虑使用WebSooCKS,它也严格依赖于您的情况。如果你有大量的流量,那么考虑<代码> WebSosiks。您也可以使用普通的轮询技术来实现这一点。一个快速的解决方案是将最新的
数据响应保存到成功函数回调之外的var。然后,将其与当前响应进行比较——如果它们不同,则进行更新。我还没有对它进行足够的研究来说明这是否是最好的方法,所以我将把它作为一个评论。我将对此进行一次尝试
<script type='text/javascript' language='javascript'>
$('#getdata').click(function () {
$.ajax({
url: '<?php echo base_url().'index.php/welcome/insertJSON';?>',
async: false,
type: "POST",
success: function(data) {
// thought i could do something like
if(data.change in database) do bla bla
var id = data[0];
var arr = data[1];
var arr2 = data[2]
}
})
});
</script>