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];
}

猜你喜欢

转载自blog.csdn.net/zhaohanqq/article/details/84946346