这次的总结是针对于一次bug,先说下我们遇到的问题,就是后台人员告诉我们添加数据到100条数据的时候,101条就看不到,当时我觉得就是没有分页的原因,所以我就以为在jqgrid中设置一个loadonce就行了。这样设置之后,确实可以翻页了。但是等到翻到第二页的时候,我们的数据有很多报错了,全是underfind,这个时候就可以看出来是formatter这个没有起作用,然后我研究了好久,确实没有找到有用的方法,(如果大家有办法的话,可以给我留言)那只能曲线救国了。
就是使用jquery的ajax请求回来数据之后,然后在设置jqgrid中的data为本地的数据,这样。请看下面的代码:
1 var mydata = "";//获取到的全部的数据 2 var this_page = 1;//当前的页数
1 function load_data_again(){ //重新加载数据 2 jQuery("#table_list_1").jqGrid("clearGridData"); 3 4 console.log("当前的页数:",this_page) 5 $.ajax({ 6 url: "{:url('relatives_friends_list')}", 7 data:{ 8 bind_type:3 9 }, 10 success:function(data){ 11 if(data){ 12 mydata = data;//mydata为全局变量,这个是为了赋值数据用的 13 $("#table_list_1").jqGrid('setGridParam', { 14 data:mydata, 15 page:this_page,//这个也是全局的变量,这个会在loadComplete之后获取到当前的页面 16 }).trigger("reloadGrid"); 17 } 18 } 19 }) 20 }
在程序中已经写的比较明白了,就是mydata为全局变量,为了存储获取到的数据,this_page为当前页面的页面,这个主要是为了判断当前是在哪个页面。在下面我会jqgrid中的
loadComplete
代码放在下面
1 loadComplete:function(t){ 2 this_page = $('#table_list_1').getGridParam('page'); // current page 3 }
近期又做了一个功能,就是需要检查登录是否失效,这个时候,就需要判断jqgrid请求的ajax是否登录失效了。请看下面的代码
1 ajaxGridOptions:{ 2 complete: function (XMLHttpRequest, textStatus) { 3 var dataJson = JSON.parse(XMLHttpRequest.responseText); 4 if(dataJson.errorCode!=0 && dataJson.msg){ 5 alert(dataJson.msg); 6 jump_login(dataJson); 7 } 8 } 9 }
这里面是请求ajax的时候的全部参数,大家可以自行的打印XMLHttpRequest查看其中的数据。这样以后就能判断了返回的值。我们是判断数据中,errorCode不等于0,且等于10000,然后进入这个jump_login的函数,跳转到登录的页面。大家如果有自己的需求同样可以做。(我们原来还做过一次,就是PHP直接来判断是否登录过期,然后跳转到登录页面的,但是这次不知道为什么,不可以了,所以就让前端来做)