gpt4 book ai didi

angularjs - AugluarJS 截断尾随等号

转载 作者:行者123 更新时间:2023-12-02 23:06:04 25 4
gpt4 key购买 nike

AngularJS 在路由到它们时会截断尾随的等号。我有一个 base64 字符串,需要将其作为查询参数添加到 url(route)

例如:http://example.com/#!/updatepassword?code=NnuW3q49QW38Mf-Cg==

这加载为: http://example.com/#!/updatepassword?code=NnuW3q49QW38Mf-Cg

有解决办法吗?

最佳答案

如果您尝试将路由设置为字符串,则需要转义 = 符号。这是因为该字符在查询字符串中具有特殊含义 - 它将参数名称与其值分开。

因此,一种解决方案可能是:

var query = "code=NnuW3q49QW38Mf-Cg==";
$location.url("/some/path?" + encodeURIComponent(query));

什么encodeURIComponent()会做,它会替换所有特殊字符 - 例如 = 将被替换为 %3D。这将防止它被解释为键值分隔符。

如果您只想更改查询字符串参数,而不是整个 URL,您还可以使用 $location.search() 方法:

$location.search("code", "NnuW3q49QW38Mf-Cg==");

只需记住向该方法传递两个参数,而不是一个。如果您这样做:

$location.search("code=NnuW3q49QW38Mf-Cg==");

= 符号不会被转义,只会被剥离。

<小时/>

Angular内部使用parseKeyValue()函数来解析查询字符串,可以找到here 。您可以看到分割是通过 = 符号完成的。这就是他们被剥夺的原因。

但是如果你看一下.search() method implementation ,您会看到仅当您向 .search() 提供一个参数时才会调用 parseKeyValue()。如果您提供参数名称作为第一个参数,并提供值作为第二个参数,则不会调用它。

查看源代码还提出了另一种解决方案:

$location.search({"code": "NnuW3q49QW38Mf-Cg=="});

关于angularjs - AugluarJS 截断尾随等号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28894937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com