ie瀏覽器一直是程序員的噩夢。項目在谷歌瀏覽器上完美運行。在ie瀏覽器上,緩存問題真心惡心。后台查看了資料說在接口上加上時間戳或隨機數就行了。要是這樣干,工作量真心大啊。后來我對我們公司大神封裝的axios進行修改。
修改前POST請求:
export const postRequest = (url, params, method) => { // debugger //base = getCookie("server_context_gi"); // alert(`${base}${url}`); if(method == "form") { return axios({ method: 'post', url: `${base}${url}`, data: params, transformRequest: [function(data) { let ret = '' for(let it in data) { if((typeof data[it]) === 'object') { data[it] = JSON.stringify(data[it]) } ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&' } return ret }], headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }); } else if(method == "json") { return axios({ method: 'post', url: `${base}${url}`, data: params, headers: { 'Content-Type': 'application/json;charset=UTF-8' } }); } }
修改后:
export const postRequest = (url, params, method) => { //base = getCookie("server_context_gi"); // alert(`${base}${url}`); if(method == "form") { return axios({ method: 'post', url: `${base}${url}`, data: params, transformRequest: [function(data) { let ret = '' for(let it in data) { if((typeof data[it]) === 'object') { data[it] = JSON.stringify(data[it]) } ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&' } ret = ret + 'n=' + encodeURIComponent(Math.random()) return ret }], headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }); } else if(method == "json") { if(params){ if(typeof(params)=='string'){ let p1 = JSON.parse(params); p1['n'] = encodeURIComponent(Math.random()); params=JSON.stringify(p1); }else{ params['n'] = encodeURIComponent(Math.random()); } } return axios({ method: 'post', url: `${base}${url}`, data: params, headers: { 'Content-Type': 'application/json;charset=UTF-8' } }); } }
修改前get請求:
export const getRequest = (url) => { //base = getCookie("server_context_gi"); // alert(`${base}${url}`); return axios({ method: 'get', url: `${base}${url}` }); } export const searchRequest = (url, params) => { // base = getCookie("server_context_gi"); let ret = ''; for(let it in params) { ret += encodeURIComponent(it) + '=' + encodeURIComponent(params[it]) + '&' } return axios({ method: 'get', url: `${base}${url}` + "?" + ret }); }
修改后:
export const getRequest = (url) => { //base = getCookie("server_context_gi"); // alert(`${base}${url}`); if(url.indexOf("?") != -1){ url = url + "&n="+encodeURIComponent(Math.random()) }else{ url = url + "?n="+encodeURIComponent(Math.random()) } return axios({ method: 'get', url: `${base}${url}` }); } export const searchRequest = (url, params) => { // base = getCookie("server_context_gi"); let ret = ''; for(let it in params) { ret += encodeURIComponent(it) + '=' + encodeURIComponent(params[it]) + '&' } ret = ret + "n=" + encodeURIComponent(Math.random()) return axios({ method: 'get', url: `${base}${url}` + "?" + ret }); }
這樣就解決了ie緩存問題,這樣修改的關鍵點是只要修改封裝的axios即可,其他的不用修改。