1. 程式人生 > >html頁面傳值的querystring方式的注意事項

html頁面傳值的querystring方式的注意事項

一/ 帶有中文,需要編碼解碼

  • 從一個頁面到另一個頁面
  • 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];
}