location.href正在解码URL

时间:2014-04-01 20:21:29

标签: javascript

我有一个javascript函数:

function QuoteBeGone(url)
{
    location.href = url;
}

传递的网址已经过编码,例如http://www.target.com/page.asp?name%3DJohn%27s%2BProject,但是当加载新网页时,网址会被取消编码 - http://www.target.com/page.asp?name=John's+Project

撇号正在弄乱页面,所以我想将它保存在URL中,但它似乎不会保持这种状态。我假设location.href函数在传递URL之前解释URL。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

在您创建传递给该函数的网址的位置,使用encodeURIComponent()的值name

e.g。

var john = "John's Project";
QuoteBeGone('http://www.target.com/page.asp?name='+encodeURIComponent(john));

如果由于导航到该URL而仍希望在解码后对其进行编码,则必须进行双重编码:

QuoteBeGone('http://www.target.com/page.asp?name='+encodeURIComponent(encodeURIComponent(john)));