Javascript - " history.pushState"取代常规"&"与"&"。怎么避免呢?

时间:2016-03-18 18:23:56

标签: javascript jquery ruby-on-rails ruby pushstate

我正在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);时,网址仍然是$amp;而不是&

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

谢谢

2 个答案:

答案 0 :(得分:0)

更改

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

var replaced_url = url.replace(/&amp;/g, '&');
好像,url有多个&amp;'s,因为单个替换字符串不起作用,所以考虑用这些东西替换组。

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

答案 1 :(得分:0)

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

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