Изменить параметр в URL (с переменными) - PullRequest
0 голосов
/ 07 февраля 2019

Итак, у меня есть параметр " referer " для источника трафика:

https://example.com? Referer = origin

И параметр " site" для страны сайта:

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 голосов
/ 08 февраля 2019

Вы можете использовать эту функцию, чтобы получить значение параметра из 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)
0 голосов
/ 07 февраля 2019

Можете ли вы попробовать этот метод для обновления строки запроса 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;
  }
}

Как добавить или обновить параметр строки запроса?

...