/**
* @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||{});