我注意到当我将一个数组参数传递给$ location.search()时,它的编码方式如下例所示
$ location.path('/ somePath')。search('ids [] =',[1,2,3]);
变为
/ somePath DS%5B%5D = 1&安培; DS%5B%5D = 2及DS%5B%5D = 3
有没有办法避免网址编码?
答案 0 :(得分:2)
原谅迟到的答复,但我自己也遇到了类似的困境,并认为我会提供建议。
简而言之,如果您打算使用$location.search
,则无法避免编码的网址。
如果你专门看一下Angular源代码location.js
,你会注意到函数返回组合的URL(即LocationHtml5Url
)都依赖于另一个名为toKeyValue
的函数调用,它将在设置时对所有键值对进行编码。
此外,在您提供的示例用例中,您不需要键内的等号。当使用两个参数调用$location.search
时,它们将被Angular视为键值对。
如果您需要在编码后使用位置网址,则可以随时拨打decodeURIComponent
。
答案 1 :(得分:1)
有些年头了,但我找到了绕过$ location服务所做的URI编码的方法:只需重写WHERE FieldName IN (1,2,3)
window.encodeURIComponent
这不是最佳解决方案,但它可以按预期工作。