http://localhost/test/editformquestions.php#?formid=1
和
http://localhost/test/editformquestions.php?formid=1
我未能在第一个中找回$_GET['formid']
,为什么?
test/editformquestions.php
的内容很简单:
<?php
echo $_GET['formid'];
?>
答案 0 :(得分:6)
浏览器将使用散列#后面的字符,它们不会被发送回服务器。
答案 1 :(得分:3)
#
是哈希字符,而不是GET变量。
您需要在任何哈希值之前放置?
,否则将不会填充$ _GET数组。
答案 2 :(得分:2)
#
,并且永远不会将其发送到服务器。浏览器使用#
之后的所有内容(无论它是什么)跳转到页面上的某个位置。
所以:
http://localhost/test/editformquestions.php#?formid=1
将拆分如下:
http://localhost/test/editformquestions.php
浏览器然后在页面中搜索:
<a name="?formid=1">named anchor tag</a>
你应该做的是:
http://localhost/test/editformquestions.php?formid=1&othervar=2#anchorinpage
或者,如果在查询字符串参数中需要#
:
http://localhost/test/editformquestions.php?formid=1&othervar=textwith%23init
答案 3 :(得分:0)
#
是网址的片段标识符:http://en.wikipedia.org/wiki/Fragment_identifier
要将它用作数组变量的一部分,您需要对其进行url编码:
'#' becomes '%23' when url-encoded
在javascript中,您可以使用encodeURI()
函数
答案 4 :(得分:0)
HTTP URL可能包含以下部分:
http://
localhost
/test/editformquestions.php
?formid=1
- 始终以?
#something
- 始终以#
开头 - 在#
标记未发送到服务器之后的任何内容。您在第一个示例(http://localhost/test/editformquestions.php#?formid=1
)中的内容是包含此内容的片段:#?formid=1
。片段中有?
并不重要;只要它在#
后面,就不会从浏览器发送。
所以,实际上,你只是向服务器发送了这个:http://localhost/test/editformquestions.php
- 正如你所看到的那样,在该请求中没有formid。