我有一个javascript函数,它作为查询字符串值传递另一个查询字符串.
换句话说,我希望查询字符串为:
http://www.somesite.com/?somequery=%3fkey%3dvalue1%2520%26%2520key2%3value3
但是,如果我像这样重定向:
var url = 'http://www.somesite.com/?somequery='; url += escape('?key=value1&key2=value2'); window.location = url;
它最终http://www.somesite.com?somequery=?key1=value1&key2=value2
在firefox和IE7中,这意味着我无法正确解析查询字符串.
我也试过使用encodeURIComponent也没用.
是否有另一个函数或黑客强制重定向保持somequery
值逃脱?
encodeURIComponent将起作用.(您可能想要也可能不想要前导'?',具体取决于脚本的期望.)
var c= 'd e' var query= '?a=b&c='+encodeURIComponent(c); var uri= 'http://www.example.com/script?query='+encodeURIComponent(query); window.location= uri;
带我去:
http://www.example.com/script?query=%3Fa%3Db%26c%3Dd%2520e
当您将鼠标悬停在浏览器的状态栏上时,它可能会出现一次解码,但最终会出现在正确的位置.
escape/unescape()对于编码查询参数是错误的,它会获得Unicode字符和错误.几乎从来没有一种情况下escape()是你真正需要的.