Adding a parameter to the URL with JavaScript

后端 未结 30 2752
刺人心
刺人心 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:51

    Here's a vastly simplified version, making tradeoffs for legibility and fewer lines of code instead of micro-optimized performance (and we're talking about a few miliseconds difference, realistically... due to the nature of this (operating on the current document's location), this will most likely be ran once on a page).

    /**
    * Add a URL parameter (or changing it if it already exists)
    * @param {search} string  this is typically document.location.search
    * @param {key}    string  the key to set
    * @param {val}    string  value 
    */
    var addUrlParam = function(search, key, val){
      var newParam = key + '=' + val,
          params = '?' + newParam;
    
      // If the "search" string exists, then build params from it
      if (search) {
        // Try to replace an existance instance
        params = search.replace(new RegExp('([?&])' + key + '[^&]*'), '$1' + newParam);
    
        // If nothing was replaced, then add the new param to the end
        if (params === search) {
          params += '&' + newParam;
        }
      }
    
      return params;
    };
    

    You would then use this like so:

    document.location.pathname + addUrlParam(document.location.search, 'foo', 'bar');
    

提交回复
热议问题