【发布时间】:2019-09-19 14:12:03
【问题描述】:
我试图在 Angular 中传递一个 queryParam,它由一组对象组成,例如 fooArray = [{foo: 'bar', foo: false}, {foo: 'bar', foo: false}]。在 URL queryParam 中,我收到以下信息: %255B when using encodeURI(JSON.stringify(this.fooArray))
我尝试使用 encodeURI(JSON.stringify()) 将数组编码为 queryParam 和 JSON.parse(decodeURIComponent()) 来检索参数
fooArray = [{foo: 'bar', foo: false}, {foo: 'bar', foo: false}]
fooParam: encodeURI(JSON.stringify(this.fooArray))
JSON.parse(decodeURIComponent(params["fooParam"]))
【问题讨论】:
-
请注意,您的第二个键 (
foo: false) 会覆盖第一个 (foo: 'bar') -
encodeURI(JSON.stringify([{foo: 'bar', foo: false}, {foo: 'bar', foo: false}]))给了我"%5B%7B%22foo%22:false%7D,%7B%22foo%22:false%7D%5D"(Chrome)。在我看来,您正在对它进行双重编码,因为如果您再次传递它,%将(正确)编码为%25。 -
您能再添加一点上下文吗?例如。你在哪里使用你的查询参数?在
router.navigate?如果是这样,你不需要编码任何东西,因为 Angular 正在为你做这些。
标签: javascript urlencode query-parameters encodeuricomponent