javascript - 无法使用 searchParams 复制表单数组
问题描述
我有这个输入<select class="form-select" name="filters[]">
,当我提交表单时,我在 url 中得到这种格式:https://example.com/search?filters%5B%5D=post
post
选择的选项的值在哪里。现在我正在用 AJAX 构建一个负载更多的系统,所以我需要复制filter
参数,所以尝试了:
let url = new URL('<?= base_url('search') ?>');
url.searchParams.append('filters', JSON.stringify(filters));
但是 JS 生成的 url 是不同的:
/search?filters%5B%5D <- correct
/search?filters=%5B%22post%22%5D <- incorrect
我做错了什么?
解决方案
根据当前输出,filters
是一个包含单个字符串的数组:["post"]
console.log( decodeURIComponent("%5B%22post%22%5D") )
要获得所需的查询字符串,
- 根据 上的
name
属性select
,键应该是"filters[]"
,而不是"filter"
- 该值必须是一个字符串,如
"post"
. 您正在传递一个数组的 JSON 字符串,例如'["post"]'
const params = new URLSearchParams()
params.append("filters[]", 'post')
console.log(
params.toString()
)
推荐阅读
- java - Pollable disruptor
- c - C - 如何在我的宏中赋值?
- c# - 使用双向绑定的 UWP 两个单选按钮在页面导航后停止工作
- python - 无论如何,是否可以从谷歌开发者控制台识别每个用户对 Gmail API 的配额命中?
- python - 将四个字母的单词与一个任意字符匹配
- html - 如何防止超出图像框的描述文本溢出?
- loops - 来自调试器的消息:由于循环的内存问题而终止
- javascript - 我有一个关于从存储在 lowdb 中的记录中获取特定字段的问题
- node.js - 如何发布没有任何 babel 依赖的 npm 模块?
- google-app-engine - 应用引擎自定义域不默认为 HTTPS