php获取url井号后的参数(描点#后参数)
有时候我们需要获取url井号后的参数(即描点#后的参数),如下面的链接:http://www.xindingyue.com/example/#comment-1314
现在要获取#号后面的comment-1314,如何通过php获取呢?
首先声明php是无法直接获取的,因为这是向浏览器客户端发送的参数,在服务端压根就不接受这样的参数,$_SERVER["REQUEST_URI"]变量里是不会包含#号后面的东西的,所以无法像我们平时用php处理url那样了,那到底如何获取呢?
这是向客户端发送的参数,所以获取他只能去到客户端里获取,这里有个思路是先用前台javascript脚本获取后再把获取到的参数写入到cookie,下面是javaScript代码<script>
var query = location.href.split('#');
document.cookies = 'anchor=' + query[1];
<script>
再后就可以通过php读取cookie里的参数了:<?php
echo $_COOKIE['anchor'];
?>
二者完整结合的代码<script language="javascript">
query=location.href.split("#");
//简单判断是不是我们要的参数
if(query[1] && query[1].indexOf("comment") >= 0){
document.cookie='anchor='+query[1];
if (query[1] != "<?php echo $_COOKIE['anchor']; ?>") {
//第一次获取后,cookie还没生效需重载一次
window.location.reload();
}
}
</script>
<?php echo $_COOKIE['anchor']; ?>
这个用javaScript写入cookie方法获得井号后的参数,方便是很方便,但是第一次载入这个页面,都要reload()一次,用户体验不是很好吧,改用ajax方法可以解决这个问题,如果对ajax方法熟悉的话参考上面的代码加以修改也是很简单的事情,具体就不写代码了,因为ajax涉及到不是单页的事。
posted on 2015-02-25 13:57 newdingyue 阅读(7078) 评论(0) 编辑 收藏 举报