it-swarm-pt.tech

Como adicionar o parâmetro url ao URL atual?

Atualmente estou em http://example.com/topic.php?id=14 e quero fazer um link para http://example.com/topic.php?id=14&like=like não definindo o URL atual. Como <a href="&like=like">Like</a>. No entanto este último me mostra http://example.com/&like=like

36
ilhan

Não há como gravar um URI relativo que preserve a string de consulta existente ao adicionar parâmetros adicionais a ela.

Voce tem que:

topic.php?id=14&like=like
11
Quentin
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;
}

Em seguida, adicione seu valor com algo parecido;

echo currentUrl().'&value=myVal';
13
Marco Pace

Eu sei que estou atrasado para o jogo, mas você pode apenas fazer ?id=14&like=like usando a consulta de compilação http da seguinte maneira:

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

Quaisquer parâmetros GET que você tivesse ainda estarão lá e se like fosse um parâmetro antes de ser sobrescrito, caso contrário, ele será incluído no final.

8
Zachary Weixelbaum

Se você deseja usar "como" como um parâmetro, seu link precisa ser:

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

Mais provável, porém, é que você quer:

<a href="/topic.php?id=14&like=like">Like</a>
3
span

Talvez você possa escrever uma função da seguinte maneira:

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);
  }
}
0
killernova