ajax二次封装

## onion.ajax ### 功能 发送 ajax 请求 ### 使用场景 1. GET 请求 ```js onion.ajax.get(url, params, function (res) { if(res.code == onion.networkState.SUCC){ callback && callback(res.data) }else{ callback && callback(false); } }) ``` 2. POST 请求 ```js onion.ajax.post(url, params, function (res) { if(res.code == onion.networkState.SUCC){ callback && callback(res.data) }else{ callback && callback(false); } }) ``` 3. 带有文件上传的 POST 请求 ```js onion.ajax.minPost(url, formData, function (res) { if (res.code == onion.networkState.SUCC) { // 成功操作 } else { // 失败操作 } }) ``` ### 如何使用 url, params, callback 分别为 接口地址, 发送参数, 回调函数 1. onion.ajax.get(url, params, callback, headData) 接收需要进行 GET 请求的数据, 请求结果在回调函数中操作, headData 为自定义请求头 (以对象形式传参) , 没有则不操作请求头 2. onion.ajax.post(url, params, callback, status) 接收需要进行 POST 请求的数据, 请求结果在回调函数中操作, status 为是否为异步请求, 默认为true, 即不会等待ajax请求返回的结果,会直接执行ajax后面的语句 3. onion.ajax.minPost(url, data, callback, headData, status) 接收需要进行有文件上传需求的 POST 请求的数据, 请求结果在回调函数中操作, headData, status 传参同上, **注意所传的 data 必须为 formData 格式** ### api定义 ``` javascript // ajax二次封装 function MyAjax() {}; /** * @desc GET 请求方式 * * @params [string] url * @params [object] 数据 * @params [function] 回调 * * */ MyAjax.prototype.get = function (url, data, callback, headData) { url = onionUrl + url; if (!onion.help.isFunction(data)) { if (onion.help.isObject(data)) { var str = ''; for (var key in data) { var temp = key + '=' + data[key]; str += temp + '&'; } str = str.substr(0, str.length - 1); url += '?' + str; } } else { var callback = data; } $.ajax({ type: 'GET', url: url, cache: true, dataType: 'json', beforeSend: function (request) { if (!headData) return; for (var key in headData) { request.setRequestHeader(key, JSON.stringify(headData[key])); } }, success: function (res) { onion.log.setLog(url, res); if (res.code == onion.networkState.NOTAUTH) { // 没有权限,应该退出登录 onion.leave(); return; } callback && callback(res); }, error: function (err) { callback && callback(err); } }) }; /** * @desc POST * * @params url [string] * @params data [object] * @params callback [function] 回调 * * */ MyAjax.prototype.post = function (url, data, callback, status) { var url = onionUrl + url; if (onion.help.isObject(data) || onion.help.isArray(data)) { var data = JSON.stringify(data); } else if (onion.help.isFormData(data)) { var data = data; } else { callback = data; var data = JSON.stringify({}) } $.ajax({ type: 'POST', url: url, data: data, async: !status || status, dataType: 'json', contentType: "application/json", success: function (res) { onion.log.setLog(url, res); if (res.code == onion.networkState.NOTAUTH) { // 没有权限,应该退出登录 onion.leave(); return; } callback && callback(res); }, error: function (err) { callback && callback(err); } }) } // 用于表单formData的提交 /** * * eg: onion.ajax.minPost('onio') * * 备注:用于处理 通过FormData上传数据的方式 * * */ // 上传文件 MyAjax.prototype.minPost = function (url, data, callback, headData, status) { var url = onionUrl + url; if (onion.help.isObject(data) || onion.help.isArray(data)) { var data = JSON.stringify(data); } else if (onion.help.isFormData(data)) { var data = data; } else { callback = data; var data = JSON.stringify({}) } $.ajax({ type: 'POST', url: url, data: data, dataType: 'json', async: !status || status, processData: false, beforeSend: function (request) { if (!headData) return; for (var key in headData) { request.setRequestHeader(key, JSON.stringify(headData[key])); } }, contentType: false, success: function (res) { if (res.code == onion.networkState.NOTAUTH) { // 没有权限,应该退出登录 onion.leave(); return; } callback && callback(res); }, error: function (err) { //console.log(err); callback && callback(err); } }) } onion.ajax = new MyAjax(); ```