做項目的時候,遇到一個小的問題.一個get請求列表數據的接口,在其它瀏覽器上是可以正常請求的.但是在ie瀏覽器上確出現奇怪的http請求400錯誤,其含義是你訪問的頁面域名不存在或者請求錯誤,自己的本地,肯定沒問題.那就是請求錯誤了.幾經嘗試發現是參數帶中文的會出現此種情況,沒帶中文的沒有問題.
如圖(不帶中文的參數返回的內容):
如圖(帶中文的參數):
以上可以發現,如果傳參是中文的接口,返回是400,其餘的參數都可以正常請求。
解決方法:將傳遞的參數進行編碼,然後傳遞給後臺,js編碼encodeURI(中文參數),
//獲取菜單列表數據
getMenulist: function() {
let that = this;
//兼容IE瀏覽器相同接口,有緩存,需要添加時間戳
let time=new Date().getTime();
//兼容IE瀏覽器傳遞中文,解碼後可以正常請求
let name = encodeURI(that.menuName);
that.axios.get(api + '/sysmenutree/select2?treename=' +name+'&time='+time).then(function(response) {
var flag = response.data.flag;
var data = JSON.parse(response.data.data);
if(flag == 'true') {
that.menuData = data;
}else {
that.menuData = [];
that.$message.error(response.data.mes);
}
}).catch(function(error) {
console.log(error);
})
},
就可以解決傳遞中文參數,在IE瀏覽器沒有反應的問題了。