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;