2017-08-24 97 views
0

所以目前,我有我的网址是这样的:http://localhost:8000/fund_monitor/fund_details/fundaccountid=4&transmission=3&startDate=2017-08-01&endDate=2017-08-02/JavaScript网址替换

后来,当我重定向使用windows.location.replace(url)的网址,该网址会变成这样:http://localhost:8000/fund_monitor/fund_details/fundaccountid%3D4&transmission%3D3&startDate%3D2017-08-01&endDate%3D2017-08-02/

所以等号被转换为另一种格式。有没有办法保留原始格式?

感谢

+2

似乎并没有引起我的问​​题在Chrome最新版本。你正在使用哪种浏览器? –

+0

那么为什么它不是查询字符串?它正在urlencoded .... – epascarello

+0

我使用Chrome:/ – anderish

回答

4

这可能是因为该网址是不是一个有效的格式。它的格式大致是protocol://host:port/path?query_params [1],其中query_params看起来像a=1&b=2等等。但你确实需要?来分隔你的参数路径。无论你使用的是什么,似乎将fundaccountid=4&transmission=3&startDate=2017-08-01&endDate=2017-08-02/这部分视为一个路径,而url会对它进行编码,因此它可能是一条正确的路径。也许尝试写的URL为:http://localhost:8000/fund_monitor/fund_details?fundaccountid=4&transmission=3&startDate=2017-08-01&endDate=2017-08-02 并看看是否有效。

虽然这会对您的后端进行一些更改。


[1]全格式,你可以看到WikipediaRFC 3986

2

您可以使用decodeURIComponent()

decodeURIComponent()函数解码先前由encodeURIComponent或类似例程创建的统一资源标识符(URI)组件。

var url = 'http://localhost:8000/fund_monitor/fund_details/fundaccountid%3D4&transmission%3D3&startDate%3D2017-08-01&endDate%3D2017-08-02/'; 
 

 
console.log(decodeURIComponent(url));

+1

好和可靠的答案 –

+0

这是正确答案的相反。他想知道为什么他的URL正在编码,而不是如何编码。 – 2017-08-24 13:59:49

+0

@torazaburo只附上了错误的描述。该代码段是正确的获取解码的URL,但其解释是错误的。更正它。感谢您指出。 –