MENU

JavaScript使用GET请求传递特殊字符

概述

由于三方模块的限制,项目中某个页面必须使用GET请求提交参数
但提交的参数中有特殊字符#,服务端接收到的参数值只有#之前的内容
同理,当参数值中含有?!=()#%&这类特殊字符时都会丢失其后的内容

请求地址示例:http://localhost/module/function?param1=value123#456#789

解决方法

使用JavaScript的encodeURIComponent函数可以对字符串进行编码,使用方式如下:

let param1 = '123#456#789';
log.debug(encodeURIComponent(param1));

注意

之所以不使用JavaScript的escape函数,是因为escape函数针对的是对字符串进行编码,而非URL编码。
另外,encodeURI也可以用于解决这个问题,但encodeURIComponent相对于encodeURI函数而言具有更大的编码范围,测试如下。

let url = "https://blog.wanvale.com/module/function?param1=123#456/789 spacing-end";
encodeURI(url)
encodeURIComponent(url)

输出结果如下

"https://blog.wanvale.com/module/function?param1=123#456/789%20spacing-end"
"https%3A%2F%2Fblog.wanvale.com%2Fmodule%2Ffunction%3Fparam1%3D123%23456%2F789%20spacing-end"

对于不同的用途,一定要选择正确的函数。


文章标题:JavaScript使用GET请求传递特殊字符
如果文中内容侵犯了您的权益,请及时与博主取得联系进行删除!
本站文章未经许可禁止转载,本文地址:https://blog.wanvale.com/archives/429/

Archives QR Code Tip
QR Code for this page
Tipping QR Code