|
本帖最后由 jackbang 于 2011-7-5 17:14 编辑
CI 好棒!
-------------------------------------
我原来是用自带的CI分页类,写分页,后来打算用JQUERY来做AJAX无刷新分页,要用到JSON,
第一次用的办法是:
1.在控制器里写一个方法,得到数据用PHP自带的JSON转换方法,转成JSON数据,ECHO输出。
2.另在视图页HEAD里面加入<script src="<?php echo site_url('entinfo_notify/AllToJson')?>" type="text/javascript"></script>
3。然后在JQUERY 里面调用。
问题是。在IE6.0下,如果我做出增删改,操作后再返回该视图页,竟然无法更新数据,要手工刷新才看得到。而在FF,或CHROME里,就没这个问题。查了一下,说是IE6.0下会有缓存的问题,所以老是看到第一次调用的数据。
摸索一阵,总算解决了我的问题,希望对我等初学者有帮助!
第二次使用的办法是:
1. 在控制器里写方法中,不要直接ECHO输出数据,而是RETURN查询结果给要调用视图的方法里带入这个数据。
2.在输出视图的方法里面引用这个数据,并带到视图中。
3.在视图页中引用这个数组。
---------------------------------------------------
第二次使用的代码如下:
1.在控制器中,写一个方法,得到数据结果,并json_encode(结果)
PHP复制代码
function AllToJson ()
{
//载入模型
$this->load->model('notify_m');
//以对象方式获得数据
$query=$this->notify_m->GetAll();
//遍历数据赋给数组变量
for($i=0;$i<$query->num_rows();$i++ )
{
$mydata[] = $query->row_array($i);
}
//获得记录总数
$total=$query->num_rows();
//转换为JAVASCRIPT可用的JSON数据(PHP>=5.2版才支持JSON直接转换)
$json_string = json_encode($mydata);
//赋值--
$data['total']=$total;
$data['jsonstr']=$json_string;
return $data;
//第一次的方法是这样输出数据的
// echo "var myjson = {Rowsjson_string,Totaltotal}";
}
复制代码
2.在控制器中调用视图页,引入已转换好的数据
PHP复制代码
function index()
{
$data=$this->AllToJson();
$this->load->view('entinfo/notify_index',$data);
}
复制代码
3.在视图页引用这个已转换好的JSON数据
首先在<head></head>之间,加入
<script type="text/javascript">
var myjson = {Rows:<?php echo $jsonstr;?>,Total:<?php echo $total;?>};
</script>
然后,就可以在JQUERY中调用这些数据了
$(function () {
//--查询表单
//--表格
$("#seachlist").defaultGrid({
checkbox: true,
columns: [
{ display: '主键', name: 'id', align: 'left', width: 40 },
{ display: '公告类型', name: 'notify_type', minWidth: 80 },
{ display: '公告标题', name: 'notify_title', width: 300,align:'left' },
{ display: '附件', name: 'notify_accessory', minWidth: 80 },
{ display: '发布时间', name: 'notify_published', minWidth: 100 },
{ display: '发布人', name: 'notify_username', minWidth: 80 },
],dataAction: 'server', pageSize:20,
data: myjson, sortName: 'id',
width: '99.8%',height:'99.5%'
});
});
------------------------
问题解决了,我是一个初学者,如果大家有更简单,更精巧的办法,请一定要告诉我,我会更努力学的,谢谢!
|
|