🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# ajax封装 ## 3.4.ajax封装 **req方法:** ~~~ admin.req('url', { username: 'admin', password: '123456' }, function(res){ alert(res.code + '-' + res.msg); }, 'get', { headers: {} }); ~~~ * 参数一   请求的url,前面会自动加setter.baseServer * 参数二   非必填,请求参数 * 参数三   请求回调(网络错误也进此回调,404、403等) * 参数四   非必填,请求方式,get、post、put、delete等,默认get * 参数五   非必填,ajax的更多参数,如headers、dataType等 req的这五个参数是自动像左补齐的,可以简写: ~~~ // 无参数,get请求 admin.req('url', function(res){ console.log(res); }); // post提交 admin.req('url', function(res){ console.log(res); }, 'post'); admin.req('url', { username: 'xxx', password: '123456' }, function(res){ console.log(res); }, 'post'); // 参数使用JSON.stringify()会自动增加contentType为json admin.req('url', JSON.stringify(obj), function(res){ console.log(res); }, 'post'); // 相当于 admin.req('url', JSON.stringify(obj), function(res){ console.log(res); }, 'post', { contentType: 'application/json' }); // 参数使用表单序列化 admin.req('url', $('#demoForm').serialize(), function (res) { console.log(res); }, 'post', { contentType: 'application/x-www-form-urlencoded' }); ~~~ **ajax方法,参数同$.ajax:** ~~~ admin.ajax({ url: 'url', data: {}, headers: {}, type: 'post', dataType: 'json', success: function(res){ alert(res.code + '-' + res.msg); } }); ~~~ **自动传递header和预处理:** 在`assets/js/common.js`中的layui.config中增加方法: ~~~ layui.config({ // 自动传递header getAjaxHeaders: function (url) { var headers = []; headers.push({name: 'token', value: 'xxxxx'}); return headers; }, // 请求完成后预处理 ajaxSuccessBefore: function (res, url, obj) { if(res.code == 401) { alert('登录超时,请重新登录'); // obj.reload(); // 重新发起请求 // obj.update({}); // 修改res数据 // obj.xhr // ajax原始的xhr对象 return false; // 返回false阻止代码执行 } return true; } }) ~~~ > req和ajax都实现了自动传递header、预处理、网络错误也回调到success(404、500等错误)。