jQuery:更改查询字符串参数并在按钮单击时重新加载页面

时间:2018-01-29 12:09:02

标签: jquery ajax

我有这样的网址

http://localhost:60041/AnnualAppraisal/PotentialQuotient.aspx?EmpCode=677593&FYDetailID=1045&FYID=36&FYName=2017-18&Grade=F2&EmpReviewTypeId=73&FEnabled=70&PageType=MGR

我有一个保存按钮,我通过ajax调用将数据保存在db中。

保存后我在我的数据库中将FEnabled更改为71,如何更改URL中的查询字符串参数,因为我只发布ajax帖子而不是重定向到任何页面。

我在sw中看到了很多答案,但他们只有一个查询字符串参数。

请帮帮我。 提前谢谢。

2 个答案:

答案 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);