I notice that when I passed a parameter that is an array to $location.search(), it was encoded as in the following example
$location.path('/somePath').search('ids[]=', [1, 2, 3]);
becomes
/somePath?ds%5B%5D=1&ds%5B%5D=2&ds%5B%5D=3
Is there a way to avoid the url encoding?
Excuse the late reply, but I struck a similar predicament myself and thought I'd offer advice.
In short, if you intend on using $location.search
you cannot avoid the URL being encoded.
If you take a look at the Angular source, location.js
specifically, you'll notice that the functions return composed URLs (i.e. LocationHtml5Url
) all rely on another function call named toKeyValue
, which will encode all key-value pairs whenever they are set.
Furthermore, in the example use case you've provided, you don't need the equals inside your key. When $location.search
is called with two parameters, they are treated as a key-value pair by Angular.
If you need to make use of the location URL after it has been encoded, you could always call decodeURIComponent
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With