aa
/** * @Description: js ajax无刷新分页框架载入 * @Author: Hongcun * @Version: 1.0 * @Date: 2012/11/03 * #Notice: Require Jquery.js, Jquery.pagnation.js */ ;(function($, Mc){ if(!Mc.Opagnation) window.Mc = Mc; Mc.Opagnation = function(config){ var defaults = { dataSource: '', //必须 params: {}, //请求参数 requestType: 'GET', //请求类型 dataType: 'json', contentContainer: '', //内容显示区域ID|必须 pageContainer: '', //分页容器ID|必须 recordsTotal: 0, //记录数|必须 perPage: 10, //每页显示记录数 showPages: 8, //显示几个分页标签 prevText: '上一页', //上一页按钮 nextText: '下一页', //下一页按钮 edgePages: 2, //边缘显示页面数目 ellipseText: '...', //省略页数处显示 prev_show_always: true, //前一页一直显示 next_show_always:true, //后一页一直显示 link_to: 'javascript:;', //链接 renderer: false //重载内容输出方式 }; if(!$.isPlainObject(config)){ Mc.debug && Mc.debug('Mc.Opagnation Params Error!'); this.config = defaults; }else{ this.config = $.extend(defaults, config); } this.init(); } Mc.Opagnation.prototype =(function($){ /*定义私有属性*/ var serverData = ''; //服务器返回的数据 //定义私有方法 var showpages = function(){ if(this.config.pageContainer){ var self = this; $('#'+self.config.pageContainer).pagination(self.config.recordsTotal,{ prev_text: self.config.prevText, next_text: self.config.nextText, num_display_entries: self.config.showPages, callback: function(page){ self.setParam({page: page+1}); request.call(self); } }); } }; var request = function(){ var self = this; $.ajax({ 'url' : self.config.dataSource, 'context': document.getElementById(self.config.contentContainer), 'datatype': self.config.datatype, 'type': self.config.requestType, 'data': self.config.params, 'success':function(data){ serverData = data; //缓存服务器数据,以备换样式显示,只需要重写对象render就好 render.call(self, data); }, 'error': function(XMLHttpRequest, textStatus, errorThrown){ self.error(request, textStatus); } }); }; //当从服务器请求成功之后,会传入serverData var render = function(data){ if(this.config.renderer){ this.config.renderer.call(this, data); }else{ $('#'+this.config.contentContainner).html(data); } }; //Pagenation继承原型 return { init: function(){ showpages.call(this); }, //参数为{page:1}这样的对象 setParam: function(obj){ return $.isPlainObject(obj) ? $.extend(this.config.params, obj) : false; }, deleteParam: function(key){ if(typeof this.config.params[key] != undefined)this.config.params[key] = undefined; return true; }, //重新加载服务器数据 reload: function(){ request.call(this); }, //重写renderer,刷新容器页面 refresh: function(){ render.call(this); }, //整页ajax刷新,可能涉及页签与记录的显示 reloadall: function(newconfig){ //备份源对象的config //合并配置, 重新生成对象 var _config = this.config; this.config = $.extend(_config, newconfig); this.init(); }, //当服务器无响应时 error: function(request, textStatus){ alert(textStatus); } }; })($); })($, Mc||{});