目前我在http://example.com/topic.php?id=14
,我希望通过不定义当前网址来建立http://example.com/topic.php?id=14&like=like
的链接。像<a href="&like=like">Like</a>
一样。然而,最后一个显示我http://example.com/&like=like
答案 0 :(得分:14)
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';
答案 1 :(得分:12)
在向其添加其他参数的同时,无法编写保留现有查询字符串的相对URI。
你必须:
topic.php?id=14&like=like
答案 2 :(得分:8)
我知道我已经迟到了,但您可以通过使用http构建查询来执行?id=14&like=like
,如下所示:
http_build_query(array_merge($_GET, array("like"=>"like")))
无论您拥有什么GET参数,如果like
是一个参数,它将被覆盖,否则它将被包含在最后。
答案 3 :(得分:3)
如果您希望使用“like”作为参数,您的链接必须是:
<a href="/topic.php?like=like">Like</a>
更可能的是你想要的:
<a href="/topic.php?id=14&like=like">Like</a>
答案 4 :(得分:0)
也许你可以编写如下函数:
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);
}
}
答案 5 :(得分:0)
如果要在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>
答案 6 :(得分:0)
它是not elegant,但可以作为单行<a>
元素来实现
<a href onclick="event.preventDefault(); location+='&like=like'">Like</a>