2010-03-21 86 views
-1

通過JavaScript我將一個查詢參數附加到頁面url,並且我面臨着一個奇怪的行爲。如何在運行時使用jQuery添加查詢參數

<div> 
    <a href="Default3.aspx?id=2">Click me</a> 
</div> 


$(function() { 
    window.location.href = window.location.href + "&q=" + "aa"; 
}); 

現在我在default3.aspx,該頁面中的&q=aa是越來越連續加入附加&q=aa,造成網址變爲:

http://localhost:1112/WebSite2/Default3.aspx?id=2&q=aa&q=aa&q=aa&q=aa&q=aa&q=aa&q=aa&q=aa&q=aa&q=aa&q=aa&q=aa&q=aa&q=aa&q=aa&q=aa&q=aa&q=aa&q=aa&q=aa&q=aa 

一會說只是通過像<a href="Default3.aspx?id=2&q=aa">Click me</a>,但我不能這樣做。此查詢參數的值實際上是default3.aspx中的HTML元素的值。我必須在運行時添加它。

達到此目的的方法有哪些?

回答

5

發生這種情況的原因是因爲如果您更改window.location值,瀏覽器將執行重定向到新位置,並且您在document.ready中這樣做會無限期地發生。

在做此重定向之前,您可能需要檢查當前url是否已經包含這些參數。

$(function() { 
    var suffix = '&q=aa'; 
    var currentUrl = window.location.href; 
    if (currentUrl.match(suffix + '$') != suffix) { 
     window.location.href = window.location.href + suffix; 
    } 
}); 

備註:對於這個目的使用javascript在我看來似乎是一個壞主意。我會在服務器端執行這個更可靠的重定向。在您的Default.aspx頁面:

protected void Page_Load(object sender, EventArgs e) 
{ 
    var q = Request["q"]; 
    if (string.IsNullOrEmpty(q)) 
    { 
     // q parameter has not been set => redirect 
     Response.Redirect("/default.aspx?q=aa"); 
    } 
} 
+0

@Darin - u能請解釋一下,如果(currentUrl.match(後綴+ '$')=後綴!){我的意思是爲什麼$符號?感謝您的幫助 – Wondering 2010-03-21 17:47:50

+1

@Wondering:在正則表達式中使用'$'來表示字符串的結尾。因此'&q = aa $'只會匹配URL的末尾。 – mpen 2010-03-21 17:51:22

+0

我可能會使用'if(/&q = aa $ /。test(currentUrl)){'來代替。 – mpen 2010-03-21 17:54:35

相關問題