jquery-ajax封装

2021-01-18 14:13

阅读:378

标签:cache   err   数组   load   author   typeof   自动   uri   后端   

/** 请求
 * @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;
}

 

jquery-ajax封装

标签:cache   err   数组   load   author   typeof   自动   uri   后端   

原文地址:https://www.cnblogs.com/hsuhung/p/13344274.html


评论


亲,登录后才可以留言!