jquery-ajax封装
2021-01-18 14:13
标签:cache err 数组 load author typeof 自动 uri 后端 jquery-ajax封装 标签:cache err 数组 load author typeof 自动 uri 后端 原文地址:https://www.cnblogs.com/hsuhung/p/13344274.html/** 请求
* @Author: xuhong
* @Date: 2020/6/19
* @DESC: //TODO
*/
/**
* 发送请求,处理请求失败
*
* request(url, method, data, callback)
* request(url, method, callback)
* request(url, callback)
*
* @param url
* @param method 默认get
* @param data
* @param callback - 需要一个参数接收返回的数据
*/
function request(url, method=‘get‘, data, callback) {
if (typeof data == ‘function‘) {
callback = data;
data = ‘‘;
}
if (typeof method == ‘function‘) {
callback = method;
method = ‘get‘;
}
$.ajax({
type: method,
url: url,
data: data,
traditional: true, // 防止深度序列化,保证数据结构不乱(如数组)
success(res) {
if (res.code == 200) {
!callback || callback(res.data);
} else {
alert(res.message);
}
},
error(res) {
console.log(‘请求失败,请稍后再试‘);
window.location.open(‘error.html‘, ‘_self‘);
}
});
}
/**
* 文件上传
* @param url 地址
* @param formData 表单数据,文件数据写入里面
* @param callback 回调函数
*
* 例:
* const formData = new FormData();
* formData.append(‘file‘, file);
*/
function uploadFile(url, formData, callback) {
$.ajax({
url: url,
type: ‘post‘,
data: formData,
// 以下三个属性是为了防止ajax对数据的处理
cache: false, // 禁止读取缓存中的结构
contentType: false, // 数据编码格式不使用jquery的方式
processData: false, // 默认情况下,前后端传递的数据都会自动转换成字符串,这里表示不对数据进行转换
success(res) {
if (res.code == 200) {
!callback || callback(res.data);
} else {
alert(res.message);
}
},
error(res) {
console.log(‘请求失败,请稍后再试‘);
window.location.open(‘error.html‘, ‘_self‘);
}
});
}
/**
* 对象转地址参数
* @param data 需要转换的对象
*/
function toParam(data) {
let rel = ‘‘;
for (let key in data) {
rel += ‘&‘ + key + ‘=‘ + data[key];
}
return rel.replace(/^&/, ‘?‘);
}
/**
* 地址参数转对象
* @param data 地址参数
*/
function paramParse(data) {
data = decodeURI(data);
let rel = {};
data = data.replace(/\?/, ‘‘);
data.split(‘&‘).map(value => {
let p = value.split(‘=‘);
rel[p[0]] = p[1];
});
return rel;
}
下一篇:jsp数据交互(2)