完美的js URLEncode函数
当需要通过查询字符串传值给服务器时需要对get参数进行encode。
-
escape()函数,不会encode
@*/+
(已废弃) -
encodeURI()函数,不会encode
~!@#$&*()=:/,;?+'
(不推荐使用),解码用decodeURI -
encodeURIComponent()函数,不会encode
~!*()
这个函数是最常用的,解码用decodeURIComponent
我们需要对encodeURIComponent函数,最一点修改:
function urlencode (str) {
str = (str + '').toString();
return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').
replace(/\)/g, '%29').replace(/\*/g, '%2A').replace(/%20/g, '+');
}
PS:例如微信H5支付中要求对回调页面的参数
redirect_url
参数进行 URLEncode。
前端路由采用了hash模式,由于我采用的是encodeURI,导致
#
未 encode而引起#后面内容的丢失,采用encodeURIComponent就好了
版权声明:本文为haonan_z原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。