jquery-ajax封裝
阿新 • • 發佈:2020-07-20
/** 請求 * @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; }