I have a javascript function which passes as a query string value another query string.
In other words, I want the query string to be:
http://www.somesite.com/?somequery=%3fkey%3dvalue1%2520%26%2520key2%3value3
However, if I redirect like this:
var url = 'http://www.somesite.com/?somequery=';
url += escape('?key=value1&key2=value2');
window.location = url;
it ends up as http://www.somesite.com?somequery=?key1=value1&key2=value2
in firefox and IE7 which means that I can't parse the query string correctly.
I also tried using encodeURIComponent which didn't work either.
Is there another function or a hack to force the redirect to keep the somequery
value escaped??
Native
escape
method does that. but also you can create a custom encoder like:this will replace keys used in query strings. further more you can apply it to any other custom encodings by adding needed key-values pairs.
Works fine for me?
encodeURIComponent will work. (You may or may not want the leading ‘?’, depending on what the script is expecting.)
Takes me to:
When you hover over that it may appear once-decoded in the browser's status bar, but you will end up in the right place.
escape/unescape() is the wrong thing for encoding query parameters, it gets Unicode characters and pluses wrong. There is almost never a case where escape() is what you really need.