如: url中的地址是
http://www.aerchi.com/weixin/api/index.php#profile?key=48
用$_SERVER['QUERY_STRING'] 和 $_SERVER['REQUEST_URI'];均无法获取key=48
如:
echo $_SERVER['REQUEST_URI'];
显示:/weixin/api/index.php
echo $_SERVER['QUERY_STRING'];
显示:空
锚点用php是获取不到的···
#是锚点标志,服务器是不可能获得的。
$_SERVER 也不可能获得,有且只能通过 js 来获取。
得不到的,别研究了,这是客户机上的解析符号,#后的参数不会向服务器发送的
算了吧,access数据库起名的时候加个#号就是为了防止下载,#号后面的东西是会被浏览器断开的
PHP中是取不到的,像这种#号后面的锚参数,一般要用Javascript来取
关键是获取带有#后面的参数的地址,分解这个会。
echo $_SERVER['REQUEST_URI']; 就是获取的。但是不呆#后面的参数
关键是获取带有#后面的参数的地址,分解这个会。
echo $_SERVER['REQUEST_URI']; 就是获取的。但是不呆#后面的参数
只能通过JS来获取
在网上浏览时看到一些网站的URL使用#号后面传递一些字符作为参数,因为URL中#(井号)后的内容是不会被加入HTTP请求的,于是研究了一下,分享给大家。
URL:http://xxx.com/index.php?id=1#01234abcd
可以看出此处#后面的字符串作为一个标识使用,那么PHP(以PHP为例)端如何获取这个值呢?
其实PHP是不能直接获取这个值的!但是我们可以通过变通的方法来实现。常用的是通过JS把这个值设置到cookie里面,然后PHP就能访问这个cookie的数据了:
1
2
3
4
|
//Javascript 代码
var
ss = window.location.href.split(
"#"
);
document.cookies =
"ss="
+ss[1];
|
然后在PHP中就可以使用 $_COOKIE['ss'] 取得这个值了。
1
2
3
4
5
6
7
8
9
|
<script language=
"javascript"
>
var
ss =location.href.split(
"#"
);
document.cookie=
'ss='
+ss[1];
if
(ss[1] !=
"<?php echo $_COOKIE['ss']; ?>"
) {
//判断 cookie 是不是最新值,不是则重新载入页面
window.location.reload();
}
</script>
<?php
echo
$_COOKIE
[
'ss'
]; ?>
|
这个方式有个缺点,就是设置cookie后需要重新载入,PHP端才会生效,对网速慢的用户体验犹为不佳。
另一个常用的场景是通过 JS 获取参数,根据值来从PHP端以 AJAX 方式获取数据显示出来。
如 URL:http://xxx.com/#news
1
2
3
4
5
6
7
8
9
10
|
//location.hash 可获取URL里的#号和后面的部分
var
mod = location.hash;
if
(mod ==
"#news"
){
//AJAX获取和处理最新数据
$.ajax(......);
}
else
if
(mod ==
"#hots"
){
//AJAX获取和处理热门数据
$.ajax(......);
}
|
第二种方式比较适合常见的AJAX应用,编程讲究的就是灵活多变。
本文地址: http://blog.csdn.net/aerchi/article/details/51362453