Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了angularjs – AugluarJS截断尾随等号大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
AngularJS在路由到它们时截断尾随等号.我有一个base64字符串,需要作为查询参数添加到url(路由)

例如: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()会做什么,它会替换所有特殊字符 – =将替换为=例如.这将阻止它被解释为键值分隔符.

如果您只想更改查询字符串参数,而不是整个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截断尾随等号全部内容,希望文章能够帮你解决angularjs – AugluarJS截断尾随等号所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。