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编辑  收藏  举报

导航