Adding a parameter to the URL with JavaScript

后端 未结 30 2567
刺人心
刺人心 2020-11-22 07:33

In a web application that makes use of AJAX calls, I need to submit a request but add a parameter to the end of the URL, for example:

Original URL:

30条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-11-22 07:58

    This is what I use when it comes to some basic url param additions or updates on the server-side like Node.js.

    CoffeScript:

    ###
        @method addUrlParam Adds parameter to a given url. If the parameter already exists in the url is being replaced.
        @param {string} url
        @param {string} key Parameter's key
        @param {string} value Parameter's value
        @returns {string} new url containing the parameter
    ###
    addUrlParam = (url, key, value) ->
        newParam = key+"="+value
        result = url.replace(new RegExp('(&|\\?)' + key + '=[^\&|#]*'), '$1' + newParam)
        if result is url
            result = if url.indexOf('?') != -1 then url.split('?')[0] + '?' + newParam + '&' + url.split('?')[1]
        else if url.indexOf('#') != -1 then url.split('#')[0] + '?' + newParam + '#' + url.split('#')[1]
        else url + '?' + newParam
        return result

    JavaScript:

    function addUrlParam(url, key, value) {
        var newParam = key+"="+value;
        var result = url.replace(new RegExp("(&|\\?)"+key+"=[^\&|#]*"), '$1' + newParam);
        if (result === url) { 
            result = (url.indexOf("?") != -1 ? url.split("?")[0]+"?"+newParam+"&"+url.split("?")[1] 
               : (url.indexOf("#") != -1 ? url.split("#")[0]+"?"+newParam+"#"+ url.split("#")[1] 
                  : url+'?'+newParam));
        }
        return result;
    }
    
    var url = "http://www.example.com?foo=bar&ciao=3&doom=5#hashme";
    result1.innerHTML = addUrlParam(url, "ciao", "1");

提交回复
热议问题