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
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
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';
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.
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>
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>
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);
}
}