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

 

分类:

技术点:

相关文章: