我在URL查询字符串中传递值,这些字符串由JavaScript解释并用于填写表单元素。用户单击一个页面上的链接,将其转到另一个页面,然后该页面将解码URL中的值并填充表单字段。
要解码网址,我使用的是jQuery URL Decoder plugin。
这是传递给window.open()
的参数:
http://mydomain.com/whatever?EmailAddress=me%40privacy.com&YourName=joe%20schmo&CompanyName=TEXAS%20A%20%26%20M%20-%20LUBBOCK%2C%20TX
当我将该URL插入解码器的在线版本时,它被正确解析 - 查询字符串参数位于.params对象中,正确解码。
但是,当我检查window.location.href时点击链接后,我得到了这个:
http://mydomain.com/whatever?EmailAddress=me@privacy.com&YourName=joe%20schmo&CompanyName=TEXAS%20M%20&%20M%20-%20LUBBOCK,%20TX
来自URL解码器的是一个巨大的混乱(即没有正确解码IMO,因为输入没有正确编码)。
如何(安全地)返回URL解码器正确解释的字符串?
答案 0 :(得分:1)
使用像这样的javascript函数:
function urlencode(str) {
return escape(str)
.replace(' ', '%20') // or replace with '+'
.replace('@', '%40');
}
(我知道您不需要第一次更换,但这更完整......您可以根据需要添加更多替换或搜索完整的urlencode)