javascript - 有没有办法使用 javascript/Jquery 将未提交的输入字段的值属性作为 URL 的参数传递?
问题描述
我正在尝试检索未提交的输入字段的值属性作为打开/保存 Excel 文件的 URL 的参数。参数应该用于过滤excel文件。
我尝试使用 for() 循环将参数保存到数组中,然后继续使用 append() 方法将它们添加到 url 的末尾。下面的代码显示了我如何尝试一个接一个地单独附加每个参数
var url = new URL("file:database/reports/getCurrentStorageOverview.php?params=excel");
var query_string = url.search;
var search_params = new URLSearchParams(query_string);
search_params.append('params', $("#searchParameter1").val());
search_params.append('params', $("#searchParameter2").val());
search_params.append('params', $("#searchParameter3").val());
search_params.append('params', $("#searchParameter4").val());
url.search = search_params.toString();
var new_url = url.toString();
window.open("database/reports/getCurrentStorageOverview.php?params=excel");
console.log(new_url);
参数应该添加到 url 的末尾,但是控制台一直告诉我 value 属性是未定义的/当我尝试使用数组时,它正在用 4 个“undefined(s)”填充数组
解决方案
这是一种不同的方法,但由于我没有测试过你的方法,我可以向你展示我通常用于这种情况的方法:
const querify = obj => {
return Object.keys(obj)
.map(key => {
if (typeof obj[key] === 'object') {
return querify(obj[key])
} else {
return `${encodeURIComponent(key)}=${encodeURIComponent(obj[key])}`
}
})
.join('&') }
这是做什么的,它需要一个像
var filters = { page: 1, length: 10, sortBy: 'id', etc... }
并将其转换为看起来像“page=1&length=10&sortBy=id”等的查询字符串,这样你就可以像这样使用它:
var url = `database/reports/getCurrentStorageOverview.php?${querify(filters)}`
推荐阅读
- sdk - 如何将 GPIO 添加到 U-Boot SDK 源?
- c# - Datetime 获取所选时区的第二天上午 9 点的时间
- mongodb - 连接到 EC2 mongo 服务器
- matlab - 如何将整数切割添加到 MILP 约束以找到替代的最佳解决方案?
- python - 'str' 对象没有属性'close with popen.python
- eclipse - Eclipse Blender 和 PyDev 未解决的导入 pydevd
- c - 通过 C 中的 MQTT 连接到 Google IoT 核心的问题
- python - Python - 将 ISO 8601 转换为 BST 时间
- sql-server - Excel 工作表无法在 SSIS 脚本任务中打开而无需手动保存一次
- python - df1.equals(df2) 在 pandas 中的同一个 csv 文件上失败