目前我在
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
目前我在
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
无法编写相对URI,既保留现有查询字符串,又向其中添加其他参数。
你需要:
topic.php?id=14&like=like
<a href="<?php echo $_SERVER['REQUEST_URI'] . '&filter=2'; ?>">
怎么样? - rambodrahmanifunction 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';
虽然有些晚了,但你可以使用http构建查询,如下所示:?id=14&like=like
http_build_query(array_merge($_GET, array("like"=>"like")))
无论您有什么GET参数,它们仍将存在,如果like
之前是参数,则将被覆盖,否则将包含在末尾。
如果您想在JavaScript中添加URL参数,请参考此答案。如上所述,您可以在现代浏览器中使用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>
<a href onclick="event.preventDefault(); location+='&like=like'">Like</a>
<a href="/topic.php?like=like">Like</a>
<a href="/topic.php?id=14&like=like">Like</a>
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);
}
}