2012-09-26 63 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)