1. 程式人生 > 實用技巧 >jquery-ajax封裝

jquery-ajax封裝

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