Javascript - "history.pushState" 将常规的“&”替换为“&”。如何避免?

Javascript - "history.pushState" replaces regular "&" with "&". How to avoid it?

我正在 Rails 中执行 AJAX 请求,执行后,我想修改 URL 并将所有参数放在那里。

这就是我在 Rails 控制器中获取相对 URL 的方式:

@url_params = request.original_fullpath 
# => /members/info/detail?currency=usd&year=2016

然后,在JS文件中:

console.log("<%= @url_params %>");
# => /members/info/detail?currency=usd&amp;year=2016

所以我尝试了:

var url = "<%= @url_params %>";
var replaced_url = url.replace("&amp;", "&");
# => /members/info/detail?currency=usd&amp;year=2016

但它也不起作用。

当我做 history.pushState("", "", replaced_url); 时,在 URL 中仍然是 $amp; 而不是只有 &.

如何在没有&amp;字符的情况下推送URL?

谢谢

改变

var replaced_url = url.replace("&amp;", "&");

var replaced_url = url.replace(/&amp;/g, '&');

似乎,url 有多个 &,因为单独替换字符串是行不通的,所以考虑对这样的事情进行组替换。

了解更多:http://www.w3schools.com/jsref/jsref_replace.asp

我相信默认情况下 rails html 对您的输出进行编码以获得未编码的输出 try

var url = "<%=raw @url_params %>";