2012-09-26 64 views
1

的一部分,我有這個網址jQuery的拆分/替換URL

http://9001/transactions

我有需要改變URL如

http://9001/transactions?type=all 
http://9001/transactions?type=confirmed 
http://9001/transactions?type=unconfirmed 

我怎麼會去交易後更換串按鈕。我有點擊功能,只需要知道在裏面放置什麼。

url會改變,所以這不能取決於交易前的任何事情(如果這是有道理的)。很抱歉,如果問題很模糊,但很快就會完成。

+0

你希望能夠只改變參數?像類型 –

+0

我只需要更改「交易」後的字符串,所以例如當我點擊「所有」按鈕時,它變成「transactions?type = all」,但當我點擊確認按鈕時,它變成「transactions?type =確認「 –

+0

http://stackoverflow.com/a/10235376/733347 –

回答

1

我寫的正是這一點,它重新加載當前頁面的功能,並具有改變現有URL變量完全支持(以及添加新的)。你所要做的就是將一個對象文字傳給該函數。在這裏看到:https://stackoverflow.com/a/10235376/733347

在你的情況下,所有你需要做的就是調用該功能使

reloadWithQueryStringVars({"type": "all"}); 

reloadWithQueryStringVars({"type": "confirmed"}); 

reloadWithQueryStringVars({"type": "unconfirmed"}); 

的點擊你的按鈕事件

下面是引用整個功能:

function reloadWithQueryStringVars (queryStringVars) { 
    var existingQueryVars = location.search ? location.search.substring(1).split("&") : [], 
     currentUrl = location.search ? location.href.replace(location.search,"") : location.href, 
     newQueryVars = {}, 
     newUrl = currentUrl + "?"; 
    if(existingQueryVars.length > 0) { 
     for (var i = 0; i < existingQueryVars.length; i++) { 
      var pair = existingQueryVars[i].split("="); 
      newQueryVars[pair[0]] = pair[1]; 
     } 
    } 
    if(queryStringVars) { 
     for (var queryStringVar in queryStringVars) { 
      newQueryVars[queryStringVar] = queryStringVars[queryStringVar]; 
     } 
    } 
    if(newQueryVars) { 
     for (var newQueryVar in newQueryVars) { 
      newUrl += newQueryVar + "=" + newQueryVars[newQueryVar] + "&"; 
     } 
     newUrl = newUrl.substring(0, newUrl.length-1); 
     window.location.href = newUrl; 
    } else { 
     window.location.href = location.href; 
    } 
} 
+0

謝謝,工作完美 –

1

你可以建立一個函數來改變GET PARAM ...

var updateGetParam = function(key, value) { 

    window.location.search = window.location.search.replace(new RegExp("([?&;])" + key + "=.*?(&|;|$)"), "$1" + key + "=" + encodeURIComponent(value) + "$2"); 

} 

jsFiddle

您應該首先通過正則表達式轉義函數運行用戶輸入。

+0

對我來說毫無意義,你能解釋一下好嗎? –

+0

@OliMillington這是一個正則表達式,它將現有的GET參數替換爲新的值。 – alex

0

看是否有此代碼對你的作品:

var href = window.location.href; 

// This assumes the value of your button is the action and each 
// button has the class button applied. Modify as necessary 
$('.button').click(function (event) { 
    if (href.lastIndexOf('?') !== -1) { 
     href.replace(/\?(.*)/, '?type=' + $(this).val()); 
    } else { 
     href += '?type=' + $(this).val(); 
    } 
    window.location.href = href; 
}); 
+0

你可以看看我的更新問題,這種工作 –

+0

@OliMillington我在正則表達式中有錯誤。更新。 –

+0

仍然沒有替換當前字符串 –

0

一種非常原始的解決方案,但它更容易理解和執行,看看是否有幫助

var url = "http://9001/transactions?type=unconfirmed"; //in live environment, replace with var url = window.location.href; 
var urlArray = url.split('?'); 
var urlArrayLength = url.split('?').length; 


urlArray[urlArrayLength - 1] = "type=newValue"; 


url = urlArray.join('?'); 

alert(url)