我有这样的网址
我有一个保存按钮,我通过ajax调用将数据保存在db中。
保存后我在我的数据库中将FEnabled
更改为71,如何更改URL中的查询字符串参数,因为我只发布ajax帖子而不是重定向到任何页面。
我在sw中看到了很多答案,但他们只有一个查询字符串参数。
请帮帮我。 提前谢谢。
答案 0 :(得分:1)
尝试使用我很久以前在javascript中执行的此功能。它应该工作:
function replaceURLParameter(key, value) {
// value = value.split(' ').join('-'); //replaces spaces with dashes
var parameter = key + "=" + value;
var url = window.location.href;
var urlparts = url.split('?');
var finalUrl = false;
if (urlparts.length >= 2) {
/*url has parameters*/
var pars = urlparts[1].split(/[&;]/g);
var exists = false;
pars.forEach(function (element, index) {
var k = element.split('=')[0];
var v = element.split('=')[1];
if (k == key) {
exists = true;
if (!value)
pars.splice(index, 1);
else
pars[index] = parameter;
}
});
if (exists) {
finalUrl = urlparts[0] + "?";
pars.forEach(function (elem, index) {
finalUrl += elem;
if (index != pars.length)
finalUrl += "&";
});
}
if (!exists) {
/* The parameter to add doesnt exists but we have others. */
finalUrl = url + '&' + parameter;
finalUrl = setPage(1, finalUrl);
}
}
if (urlparts.length < 2) {
/*url without parameters*/
finalUrl = url + "?" + parameter;
}
return finalUrl;
}
你的例子中的调用应该是replaceURLParameter('FEnabled',71)
,它应该在查询字符串中使用新参数返回完整的url(字符串)
答案 1 :(得分:1)
您可以在.match()和.replace()使用正则表达式/(?<=FEnabled=)(.*)(?=\&)/
。
var url = 'http://localhost:60041/AnnualAppraisal/PotentialQuotient.aspx?EmpCode=677593&FYDetailID=1045&FYID=36&FYName=2017-18&Grade=F2&EmpReviewTypeId=73&FEnabled=70&PageType=MGR';
var regex = /(?<=FEnabled=)(.*)(?=\&)/;
var number = parseInt(url.match(regex)[0]);
console.log('This is the old number: ' + number);
var url = url.replace(regex, number+1);
console.log('This is the new url: ' + url);