我有以下格式的 GET 方法输入的 url
rec_test.html?emotion=Happy&myInputs_1%5B%5D=things&myInputs_1%5B%5D=are&myInputs_1%5B%5D=working&myInputs_2%5B%5D=i&myInputs_2%5B%5D=hope&myInputs_3%5B%5D=so
我正在尝试使用以下代码解析它:
function getParameterByName(name){
var url = window.location.search;
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)");
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
但是当我将 myInputs_1
传递给该函数时,它返回 null。
我以某种方式计划以以下格式生成输出:
myInput_1 = ['things', 'are', 'working']
myInput_2 = ['i', 'hope']
myInput_3 = ['so']
但我无法提取单个值。有没有办法达到预期的输出?
编辑_1
我了解到 %5B
是 [
而 %5D
是 ]
,但即使我通过了 myInput_1[]
作为函数的参数,它仍然返回 null,我不知道为什么
最佳答案
您可以使用 URLSearchParams URL 的对象实例:
s = "http://example.com/rec_test.html?emotion=Happy&myInputs_1%5B%5D=things&myInputs_1%5B%5D=are&myInputs_1%5B%5D=working&myInputs_2%5B%5D=i&myInputs_2%5B%5D=hope&myInputs_3%5B%5D=so"
url = new URL(s)
searchParams = url.searchParams
console.log(searchParams.getAll("myInputs_1[]"))
// ["things", "are", "working"]
关于javascript - 在javascript中用数组解析url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46688681/