В настоящее время я нахожусь в 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
Как добавить параметр url в текущий URL?
Ответ 1
Невозможно написать относительный URI, который сохраняет существующую строку запроса при добавлении к ней дополнительных параметров.
Вы должны:
topic.php?id=14&like=like
Ответ 2
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';
Ответ 3
Я знаю, что я опаздываю на игру, но вы можете просто сделать ?id=14&like=like
с помощью запроса на сборку http следующим образом:
http_build_query(array_merge($_GET, array("like"=>"like")))
Независимо от того, какие параметры GET у вас были, все равно там, и если like
был параметром, прежде чем он будет перезаписан, в противном случае он будет включен в конце.
Ответ 4
Если вы хотите использовать "как" в качестве параметра, вам нужна ваша ссылка:
<a href="/topic.php?like=like">Like</a>
Скорее всего, вы хотите:
<a href="/topic.php?id=14&like=like">Like</a>
Ответ 5
Возможно, вы можете написать функцию следующим образом:
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);
}
}
Ответ 6
Если вы хотите добавить параметр 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>