現在http://example.com/topic.php?id=14
にいるので、現在のURLを定義しないことでhttp://example.com/topic.php?id=14&like=like
へのリンクを作成したいです。 <a href="&like=like">Like</a>
が好きです。しかし、この最後のものは私を示していますhttp://example.com/&like=like
追加のパラメーターを追加しながら既存のクエリ文字列を保持する相対URIを記述する方法はありません。
必ず:
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;
}
次に、次のような値を追加します。
echo currentUrl().'&value=myVal';
私はゲームに遅れていることは知っていますが、あなたはただ_?id=14&like=like
次のようにhttpビルドクエリを使用します。
http_build_query(array_merge($_GET, array("like"=>"like")))
あなたが持っていたどんなGETパラメータもそこにあり、like
が上書きされる前にパラメータだった場合、そうでなければ最後に含まれます。
「like」をパラメーターとして使用する場合は、リンクを次のようにする必要があります。
<a href="/topic.php?like=like">Like</a>
おそらくあなたが望むことです:
<a href="/topic.php?id=14&like=like">Like</a>
JavaScriptでURLパラメーターを追加する場合は、 this answer を参照してください。そこで提案されているように、次のように、最新のブラウザで URLSeachParams
APIを使用できます。
<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>
たぶん次のように関数を書くことができます:
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);
}
}