2013-07-09 123 views
0

我有一個下拉菜單,允許用戶選擇要查看的數據Feed。第一次用戶選擇一個,我的URL看起來像這樣:使用javascript重定向頁面將值連接到URL而不是重定向?

http://localhost/DataFeeds/Viewer/1 

關於第二個選擇,它看起來像這樣:

http://localhost/DataFeeds/Viewer/1/2 

這顯然不正確。 1應替換爲2

下面是導致它的代碼:

$('select#ID').change(function() {     
    window.location.replace("@Url.Action("Viewer", "DataFeeds")/" + $(this).val()); 
}); 

我已經嘗試過

window.location.href = "@Url.Action("Viewer", "DataFeeds")/" + $(this).val();

但做同樣的事情。

所有建議表示讚賞。

+0

它看起來像你連接兩個字符串,而不是替換1.嘗試使用RegExp或類似替換。 – BenJamin

+0

在你的例子'''window.location.href = url'''中url的值是多少?你可以加入一些調試器語句來看看在這一點上發生了什麼? – Wheeyls

+0

沒有價值...這只是一個例子,雖然我猜這不是很明顯 – Kehlan

回答

1

以下回復錯誤。 window.location.replace()確實重定向,我的不好!

實際上window.location.replace()和window.location = url是一樣的,它與replace()從瀏覽器歷史記錄中刪除舊的位置,因此不能使用後退按鈕。


不良反應:

您正在更換不分配

window.location = window.location.replace("@Url.Action("Viewer", "DataFeeds")/" + $(this).val()); 


// This does not redirect it just grabs the string of the location and modifies it 
window.location.replace("@Url.Action("Viewer", "DataFeeds")/" + $(this).val()); 

// is the same as doing 
var redirectTo = window.location.replace("@Url.Action("Viewer", "DataFeeds")/" + $(this).val()); 

// you still need to do 
window.location = redirectTo; 

然而

如果好好嘗試工作,就像你說的,然後更換(「@網址.Action(「Viewer」,「DataFeeds」)/「+ $(this).val());是有缺陷的。

+0

當然,老闆?該方法重定向到'DataFeeds/undefined'。 – Kehlan

+0

不能..更改爲document.location! :) – Robert

+0

改變什麼?在談論代碼時,模糊性根本無法奏效。 – Kehlan