0

我有这个

<a href='#?title=sample&url=sample.com'></a>

在我放的同一页上

$title = $_GET['title'];
$url = $_GET['url'];

但它没有传递值。代码有什么问题?请帮忙!

注意:我不想重新加载页面,这就是我输入 # 的原因,因为在后面我将调用一个 javascript 函数 onclick

这是 onclick 的函数调用

<script language="JavaScript">
function overlay() {
el = document.getElementById("overlay");
el.style.visibility = (el.style.visibility == "visible") ? "hidden" : "visible";
}
</script>

其中元素“overlay”必须包含

$title = $_GET['title'];
$url = $_GET['url'];
4

4 回答 4

3

我认为您需要从 URL 中删除哈希 (#)。如果您的 URL 中需要井号标签,它必须位于 URL 的末尾:

mydomain.com?id=1#tag

如果你像你一样将哈希放在查询字符串之前,你基本上是在告诉浏览器找到一个名为“?title=sample&url=sample.com”的元素/目标,它可能不喜欢。

对于您更新的问题:

我认为你最好使用链接来调用你的 javascript 函数,而不是像你一样向你的 URL 添加查询字符串值。为了使 PHP 能够获取这些值,页面必须重新加载/发送请求到服务器。如果您不希望页面重新加载,我建议您将链接更改为:

<a onclick="overlay('This is the title','www.domain.com')">

然后有一个功能:

function overlay(theTitle, theURL) {
  el = document.getElementById("overlay");
  el.style.visibility = (el.style.visibility == "visible") ? "hidden" : "visible";
  el.innerHTML = theTitle+'<br>'+theURL;
}

这意味着您无需刷新页面即可获得所需的值。

于 2012-07-26T06:01:13.240 回答
1

告诉浏览器#您正在尝试转到页面上的锚点,因此它不会向服务器发出另一个 HTTP 请求。

如果要向服务器发出请求,则必须删除该#符号并将 URL 添加到页面:

<a href="mypage.php?title=sample&url=sample.com">
于 2012-07-26T06:01:08.083 回答
1

您的 URL 仅包含片段标识符(以字符开头的 URL 的最后部分#)。

这允许您链接到页面的特定部分(由具有与片段标识符匹配的 id 属性的元素标识,或由具有匹配名称的锚元素标识)并且完全由客户端处理 - 它不会发送到服务器。

#从 URI 中删除字符或将其放在查询字符串之后。

(另请注意,您的 HTML 无效,&表示字符引用的开始,应表示为&amp;好像您希望一个显示为数据)

于 2012-07-26T06:01:26.753 回答
0

您需要从href 中删除#。尝试改为$_SERVER["PHP_SELF"]包含(此)脚本名称

print('<a href='.$_SERVER["PHP_SELF"].'?title=SAMPLE&url=SAMPLE.COM'>Link</a>')
于 2012-07-26T06:08:36.670 回答