html頁面傳值的querystring方式的注意事項
阿新 • • 發佈:2018-12-14
一/ 帶有中文,需要編碼解碼
- 從一個頁面到另一個頁面
location.href = 'XXX/XXXX?code=趙晗'
- 頁面接收該引數時會亂碼
解決辦法:
- 傳送時編碼encodeURIComponent,接收時解碼decodeURIComponent,在工作中我發現傳送時不用編碼,只要接收時解碼就可以
//獲取從清單頁面傳過來的引數並做判斷 $(function () { classifyJion(); var url = location.href; //var url = 'fafafaf/dfafa'; var i = url.indexOf('?'); if (i == -1) { $('.updataBtn').hide(); $('.saveBtn').show(); } else { var querystr = url.substr(i + 1); var arr1 = querystr.split('&'); for (i in arr1) { var ta = arr1[i].split('='); arrParam[ta[0]] = ta[1]; } $('.saveBtn').hide(); $('.updataBtn').show(); pageLook(decodeURIComponent(arrParam.U_ItemCode)); } })
二/ 傳遞物件
- 需要將物件轉為JSON字串
obj = JSON.stringify(obj);
- 接收頁再轉回物件
arrParam = arrParam.replace(/%22/g, '"'); //因為雙引號都變成了 %22,所以用正則轉回來
var obj = JSON.parse(arrParam);
三/ 傳遞formData
- 直接傳formData或者將formData作為物件的屬性值傳過去都不行,我用的方法是遍歷formData,存入物件中,然後接收後再轉為formData。(如果要問我為什麼要這麼麻煩,我只能說專案需要)
var obj = {};
for(var pair of oformData.entries()) { //遍歷formData方法
obj[pair[0]] = pair[1];
}