javascript - 如何强制浏览器不使用 JS 将“逗号”转换为 2C 符号?
问题描述
我正在通过一个函数改变当前用户的路径:
function setSomeValue(someValues) {
var query = '';
for (var i = 0; i < someValues.length; i++) {
query += someValues[i] + ',';
}
if ('URLSearchParams' in window) {
var searchParams = new URLSearchParams(window.location.search);
searchParams.set("paramName", query);
var newRelativePathQuery = window.location.pathname + '?' + searchParams.toString();
history.pushState(null, '', newRelativePathQuery);
}
}
如您所见,我正在向用户的位置添加新词,并希望新位置如下所示:
www.site.com?paramName=value1,value2,
但是浏览器将我的逗号转换为%2C
,所以我得到了这个:
www.site.com?paramName=value1%2Cvalue2%2C
应该怎么做才能使将逗号推送到 URL 成为可能?
解决方案
(复制并粘贴多条评论)
这可能是由于URLSearchParams
它的toString
方法实现 - 但我们不知道,因为你没有向我们展示它实际上是什么。如果这不是故意对逗号进行编码,而浏览器只是自动进行编码 - 那么您对此无能为力。
如果newRelativePathQuery
已经包含编码版本,也许可以将它们替换回普通逗号。但是,如果history.pushState
这样做,那么创建 URL 本身的“其他方式”对您没有多大帮助。
由于调试输出显示已经newRelativePathQuery
包含编码的逗号,您可以尝试将它们替换回逗号,然后查看是否“幸存”被推送到历史记录。
推荐阅读
- ruby-on-rails - Rails 5.2 tinymce_rails gem 不显示多个工具栏
- python - 使用分组结果过滤 Pandas 数据框
- excel - 如何使用 If-Else 语句过滤表?
- java - 无法在项目 XX 上执行目标 无法解析项目的依赖关系。返回码为:501,ReasonPhrase:HTTPS 必填
- javascript - 可以使用 CustomValidators 来防止数据输入到文本框中吗?
- html - 试图在 Bootstrap 中居中下拉菜单和图标
- swift - Swift:使用应用程序/八位字节流响应的 GET 请求
- ios - 试图让 Chatto Demo 代码在我自己的应用程序中工作并断言失败
- sql - SQL 子查询被附加为字符串而不是正确的查询
- html - 背景图像未显示在烧瓶中