JavaScript中AJAX请求服务,URL参数有加号 “+” 传值失败的解决方法

问题背景

今天做前后端RSA加密的时候,突然发现前端加密后,使用AJAX请求后端,后端无法解密,但不是必现。

最后发现,加密后有 “+” 的,地址栏传参数会将 “+” 替换成空白字符导致。

问题原因

“+” 在 javaScript 里面代表空格。

解决办法

给加密后的参数用 encodeURIComponent() 进行编码,即可解决。

注意:不能使用 encodeURI 的进行编码,因为 encodeURI 对 “+” 不编码。