Javascript 如何从URL中获取多个同名但索引不同且唯一的参数?
我正在开发一个angular应用程序,需要将url中的不同参数作为查询参数传递。但是我们需要根据id传递参数,比如:param[1]=23,这里1和23是动态的。我已成功传递url中的参数,如:Javascript 如何从URL中获取多个同名但索引不同且唯一的参数?,javascript,angular,Javascript,Angular,我正在开发一个angular应用程序,需要将url中的不同参数作为查询参数传递。但是我们需要根据id传递参数,比如:param[1]=23,这里1和23是动态的。我已成功传递url中的参数,如: var myArrayQry = data.map(function(el) { return 'params[' + el.id + ']=' + el.quantity; }).join('&') 我们的最终url如下所示: http://example.com?params[1]=
var myArrayQry = data.map(function(el) {
return 'params[' + el.id + ']=' + el.quantity;
}).join('&')
我们的最终url如下所示:
http://example.com?params[1]=23¶m[7]=26¶ms[4]=27
当我们想要获取查询参数时,我们使用了如下查询参数:
this.route.queryParams.subscribe(res => {
console.log(res)
})
将查询参数作为对象返回,如何获取这些参数?因为名字是动态的。有什么建议吗
我尝试的内容:我尝试了
JSON.stringify
和getAll()
方法,但没有任何效果。我认为不需要手动将查询参数插入URL。您可以利用角度路由器的queryParams
选项
注意:我还将Array#map
替换为Array#reduce
以从数组创建对象。注意不要有重叠的id
s。如果是,后一个值将覆盖前一个值
组件1(*.ts)
从“@angular/Router”导入{Router}”;
构造函数(专用路由器:路由器){}
queryParams=数据减少((acc,curr)=>{
acc[当前id]=当前数量;
返回acc;
},Object.create(null));
this.router.navigate([“/example”],{queryParams:queryParams});
或者在模板中使用它
组件1(*.html)
点击我
把它放在组件2中
组件2(*.ts)
从“@angular/router”导入{ActivatedRouter}”;
构造函数(专用路由器:路由器){}
恩戈尼尼特(){
subscribe(params=>console.log(params));
}
我创建此url是为了从不同站点重定向到angular应用程序。我有一个单页应用程序,我根据客户输入创建了这个url,并使用这些参数重定向到angular应用程序。这就是为什么,我手动添加了查询参数。@TarnjeetSingh:如果您不知道查询参数键,因为它们是动态的,那么您打算如何使用它?是的,您是对的,我不太了解查询参数,但到目前为止,我们使用了查询参数,例如,检查参数是否存在,然后获取其值,但这是我第一次需要从动态参数中获取值。您可以在订阅中执行Object.keys(res)
或Object.values(res)
,以获取作为数组的对象的键和值。