webentwicklung-frage-antwort-db.com.de

Wie füge ich der aktuellen URL URL-Parameter hinzu?

Derzeit bin ich bei http://example.com/topic.php?id=14 und ich möchte einen Link zu http://example.com/topic.php?id=14&like=like erstellen, indem ich die aktuelle URL nicht definiere. Wie <a href="&like=like">Like</a>. Letzteres zeigt mir jedoch http://example.com/&like=like

36
ilhan

Es gibt keine Möglichkeit, einen relativen URI zu schreiben, der die vorhandene Abfragezeichenfolge beibehält, während zusätzliche Parameter hinzugefügt werden.

Sie müssen:

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;
}

Dann addieren Sie Ihren Wert mit etwas wie;

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

Ich weiß, dass ich zu spät zum Spiel komme, aber Sie können ?id=14&like=like mit http build query wie folgt ausführen:

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

Welche GET-Parameter Sie bereits verwendet haben, wird immer noch vorhanden sein, und wenn like vor dem Überschreiben ein Parameter war, wird er am Ende überschrieben.

8

Wenn Sie "Gefällt mir" als Parameter verwenden möchten, muss Ihr Link sein:

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

Wahrscheinlicher ist jedoch, dass Sie möchten:

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

Wenn Sie den URL-Parameter in JavaScript hinzufügen möchten, lesen Sie diese Antwort . Wie dort vorgeschlagen, können Sie die URLSeachParams - API in modernen Browsern wie folgt verwenden:

<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
mrts

Vielleicht können Sie eine Funktion wie folgt schreiben:

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