修改网址中的参数(带有变量)

时间:2019-02-07 16:40:59

标签: javascript function variables parameters url-parameters

因此,对于交通起点,我具有参数“ 引荐来源”:

  

https://example.com?referer=origin

以及网站所在国家/地区的参数“ 网站”

  

https://example.com?site=us

但是在我使用的特定平台上,只能通过导航传递“ referer”参数。 (此应用是远程应用,我无法访问源)

但是,我需要同时传递两个参数……我的想法是修改第一页视图上的“ referer”参数,使其变为:

  

https://example.com?referer=origin-us

我尝试了此功能:

<script>

function Replace() {
  var paramSite = {{Get Site}};
  var paramRef = {{Get Referer}};
  var url = window.location.toString();
  var newUrl = url.replace(/referer={{Get Referer}}/,  "referer={{Get Referer}}-{{Get Site}}");
  return newUrl.reload
}
<script>

它正在测试变量中工作...但是我无法使其在网站上工作。

2 个答案:

答案 0 :(得分:1)

您可以尝试使用此方法更新url的查询字符串吗。

function updateQueryStringParameter(uri, key, value) {
  var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");
  var separator = uri.indexOf('?') !== -1 ? "&" : "?";
  if (uri.match(re)) {
    return uri.replace(re, '$1' + key + "=" + value + '$2');
  }
  else {
    return uri + separator + key + "=" + value;
  }
}

How can I add or update a query string parameter?

答案 1 :(得分:1)

您可以使用此功能从url获取参数值

function getParameterByName(name, url) {
    if (!url) url = window.location.href;
    name = name.replace(/[\[\]]/g, '\\$&');
    var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
        results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, ' '));
}

我创建了一个示例代码来满足您的要求。

var paramSite = "https://example.com?site=us"
var paramRef = "https://example.com?referer=origin"

var site = getParameterByName("site", paramSite)

var ref = getParameterByName("referer", paramRef)

var newUrl = updateQueryStringParameter(paramRef, "referer", ref + "-" + site)