Как добавить параметр URL в текущий URL? - PullRequest
36 голосов
/ 19 декабря 2011

В настоящее время я нахожусь на http://example.com/topic.php?id=14 и хочу сделать ссылку на http://example.com/topic.php?id=14&like=like, не определяя текущий URL.Как <a href="&like=like">Like</a>.Однако этот последний показывает мне http://example.com/&like=like

Ответы [ 6 ]

14 голосов
/ 19 декабря 2011
function currentUrl() {
    $protocol = strpos(strtolower($_SERVER['SERVER_PROTOCOL']),'https') === FALSE ? 'http' : 'https';
    $host     = $_SERVER['HTTP_HOST'];
    $script   = $_SERVER['SCRIPT_NAME'];
    $params   = $_SERVER['QUERY_STRING'];

    return $protocol . '://' . $host . $script . '?' . $params;
}

Затем добавьте свою ценность чем-то вроде;

echo currentUrl().'&value=myVal';
12 голосов
/ 19 декабря 2011

Невозможно написать относительный URI, который сохраняет существующую строку запроса при добавлении к ней дополнительных параметров.

Вам необходимо:

topic.php?id=14&like=like
8 голосов
/ 17 января 2017

Я знаю, что опаздываю к игре, но вы можете просто сделать ?id=14&like=like, используя запрос http build следующим образом:

http_build_query(array_merge($_GET, array("like"=>"like")))

Какие бы параметры GET у вас ни были, они все еще будут там, и если like был параметром до того, как он будет перезаписан, в противном случае он будет включен в конец.

3 голосов
/ 19 декабря 2011

Если вы хотите использовать «лайк» в качестве параметра, ваша ссылка должна быть:

<a href="/topic.php?like=like">Like</a>

Скорее всего, вы хотите:

<a href="/topic.php?id=14&like=like">Like</a>
0 голосов
/ 10 мая 2019

Если вы хотите добавить параметр URL в JavaScript, см. этот ответ . Как предлагается там, вы можете использовать API URLSeachParams в современных браузерах следующим образом:

<script>
function addUrlParameter(name, value) {
  var searchParams = new URLSearchParams(window.location.search)
  searchParams.set(name, value)
  window.location.search = searchParams.toString()
}
</script>

<body>
...
  <a onclick="addUrlParameter('like', 'like')">Like this page</a>
...
</body>
0 голосов
/ 10 сентября 2016

Может быть, вы можете написать функцию следующим образом:

var addParams = function(key, val, url) {
  var arr = url.split('?');
  if(arr.length == 1) {
    return url + '?' + key + '=' + val;
  }
  else if(arr.length == 2) {
    var params = arr[1].split('&');
    var p = {};
    var a = [];
    var strarr = [];
    $.each(params, function(index, element) {
      a = element.split('=');
      p[a[0]] = a[1];
      })
    p[key] = val;
    for(var o in p) {
      strarr.push(o + '=' + p[o]);
    }
    var str = strarr.join('&');
    return(arr[0] + '?' + str);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...