jQuery 拆分/替换 URL 的一部分



我有这个网址

http://9001/transactions

我有需要更改网址的按钮,例如

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

我将如何在交易后替换字符串。我有点击功能,只需要知道在里面放什么。

URL 将更改,因此这不能依赖于交易之前的任何内容(如果这有意义的话)。抱歉,如果问题含糊不清,但急于完成这项工作。

你可以构建一个函数来改变GET参数...

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

jsFiddle。

您应该首先通过正则表达式转义函数运行用户输入。

我写了一个函数来做到这一点,它重新加载当前页面,并完全支持更改现有的 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;
    }
}

一个非常粗糙的解决方案,但它更容易理解和实现,看看它是否有帮助

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)

看看这段代码是否适合你:

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;
});

最新更新