EasyAjax ,封装jq的ajax var EasyAjax = {}; var _ajaxType = ['get', 'POST', 'put', 'delete', 'options', 'head', 'connect', 'trace']; var _ajaxDataType = ['json', 'xml', 'html', 'script']; var _ajaxContentType = ["application/json", "applic
var EasyAjax = {};
var _ajaxType = ['get', 'POST', 'put', 'delete', 'options', 'head', 'connect', 'trace'];
var _ajaxDataType = ['json', 'xml', 'html', 'script'];
var _ajaxContentType = ["application/json", "application/x-www-form-urlencoded"];
/**
* Ajax Get请求
* @param config Ajax需要参数
* @param callback ajax结束回调函数
*/
EasyAjax.get = function (config, callback) {
config.type = _ajaxType[0];
_ajax(config, callback);
};
/**
* Ajax Post请求
* @param config Ajax需要参数
* @param callback ajax结束回调函数
*/
EasyAjax.post = function (config, callback) {
config.type = _ajaxType[1];
_ajax(config, callback);
};
/**
* Ajax Get请求数据格式是JSON
* @param config Ajax需要参数可只配URL
* @param callback ajax结束回调函数
*/
EasyAjax.get_json = function (config, callback) {
config.type = _ajaxType[0];
config.dataType = _ajaxDataType[0];
_ajax(config, callback);
};
/**
* 文件上传Ajax
* @param config ajax配置项
* @param callback 回调函数
*/
EasyAjax.upload_file = function (config, callback) {
config.type = _ajaxType[1];
config.dataType = _ajaxDataType[0];
config.cache = false;
config.contentType = false;
config.processData = false;
_ajax(config, callback);
};
/**
* 根据dom元素上传文件
* @param config
* @param callback 回调函数
* @param elem 文件dom id or class
*/
EasyAjax.Upload_File_Elem = function (config, callback) {
var file = $(config.elem).get(0).files[0];
var fileData = new FormData();
fileData.append("file", file);
config.type = _ajaxType[1];
config.dataType = _ajaxDataType[0];
config.cache = false;
config.contentType = false;
config.processData = false;
config.data = fileData;
config.shade = 0.6;
_ajax(config, callback);
};
/**
* Ajax post请求数据格式是JSON,接口使用@RequestParam时使用,使用form表单提交方式
* @param config Ajax需要参数可只配URL
* @param callback ajax结束回调函数
*/
EasyAjax.post_form_json = function (config, callback) {
config.type = _ajaxType[1];
config.dataType = _ajaxDataType[0];
if (!config.contentType) {
config.contentType = _ajaxContentType[1];
}
_ajax(config, callback);
};
/**
* Ajax post请求数据格式是JSON
* 接口使用@RequestBody时使用自动添加contentType以及格式化参数
* @param config Ajax需要参数可只配URL
* @param callback ajax结束回调函数
*/
EasyAjax.post_json = function (config, callback) {
config.type = _ajaxType[1];
config.dataType = _ajaxDataType[0];
if (!config.contentType) {
config.contentType = _ajaxContentType[0];
}
if (config.contentType == 'application/json') {
config.data = JSON.stringify(config.data);
}
_ajax(config, callback);
};
/**
* 发送请求
*/
function _ajax(config, callback) {
var loading;
$.ajax({
url: config.url,
type: config.type,
data: config.data,
dataType: config.dataType,
contentType: config.contentType,
timeout: config.timeout,
async: config.async,
cache: config.cache,
processData: config.processData,
beforeSend: function () {
//todo 此处可以写加载中动画……
if(config.loading_msg){
loading = layui.layer.msg(config.loading_msg,{icon: 16,time:3000,shade:config.shade});
}else{
loading = layui.layer.msg('数据提交中,请稍候',{icon: 16,time:3000,shade:config.shade});
}
},
success: function (json) {
var status = _handleStatus(json);
if(status==false) return false;
/* 其他返回回调 */
(callback && typeof (callback) === "function") && callback(json);
},
error: function (XMLHttpRequest) {
alert('网络超时')
},
complete: function () {
// todo 关闭动画处理……
layui.layer.close(loading);
}
});
}
function _handleStatus(json) {
var status = true;
switch(json.ret){
case 401:
/* 公用 token 错误 */
status = false;
layui.layer.alert('刷新后重试',function(){window.location.reload();});
break;
case 402:
/* 登录超时 */
status = false;
layui.layer.alert('需要重新登录',function(){SSO_login.logout(true);});
break;
case 404:
/* 无数据 */
status = false;
layui.layer.msg('无数据');
break;
case 500:
/* 服务器内部错误 */
status = false;
layui.layer.msg('内部未知错误');
break;
case 901:
case 902:
/* 账号封停 */
layui.layer.msg('您的账号已被封停');
break;
}
return status;
}
window.EasyAjax = EasyAjax;
