window.open(),浏览器地址栏和jQuery url解码

时间:2011-04-05 15:28:41

标签: javascript jquery-plugins

我在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解码器正确解释的字符串?

1 个答案:

答案 0 :(得分:1)

使用像这样的javascript函数:

function urlencode(str) {
return escape(str)
      .replace(' ', '%20') // or replace with '+'
      .replace('@', '%40');
}

(我知道您不需要第一次更换,但这更完整......您可以根据需要添加更多替换或搜索完整的urlencode)