2017-08-24 89 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,但其解釋是錯誤的。更正它。感謝您指出。 –