我有这个网址
http://9001/transactions
我有按钮需要更改网址,例如
http://9001/transactions?type=all
http://9001/transactions?type=confirmed
http://9001/transactions?type=unconfirmed
如何在交易后更换字符串。我有点击功能,只需要知道放在里面的东西。
url会改变,所以这不能依赖于事务之前的任何事情(如果这是有道理的)。对不起,如果问题含糊不清,但大肆忙着完成。
答案 0 :(得分:1)
你可以建立一个改变GET参数的函数......
var updateGetParam = function(key, value) {
window.location.search = window.location.search.replace(new RegExp("([?&;])" + key + "=.*?(&|;|$)"), "$1" + key + "=" + encodeURIComponent(value) + "$2");
}
您应首先通过正则表达式转义功能运行用户输入。
答案 1 :(得分: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;
}
}
答案 2 :(得分: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;
});
答案 3 :(得分: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)