get请求通过路由传参时参数有#号等特殊字符串时,造成传参错误

前段时间遇到使用get方法通过url拼接方式传递过去的参数打印出来是没问题的,单传给后端却死活不对。原来是因为特殊字符的原因。
这些特殊字符不能直接通过url地址传过去,必须要进行转义成十六进制值。

get请求通过路由传参时参数有#号等特殊字符串时,造成传参错误_第1张图片

转义成十六进制值

var str = 'hh#kk%kkk&';
    str=str.replace(/\%/g,"%25");
    str=str.replace(/\#/g,"%23");
    str=str.replace(/\&/g,"%26"); // hh%23kk%25kkk%26
特殊符号 十六进制值
% %25
# %23
& %26
+ %2B
= %3D
空格 %20
/ %2F
\ %5C
? %3F
. %2E
: %3A

你可能感兴趣的:(工作中的坑,url,javascript)