我需要php中url的hashtag值

时间:2014-02-18 22:45:30

标签: javascript php hashtag

我需要在url(http://www.example.com/#TEXT)中获取hashtag后面的文本,以便我可以在php脚本中使用它。我知道我必须使用javascript收集文本然后将其保存为cookie或类似的东西。唯一的问题是我不擅长使用javascript而且我已经尝试但失败了。

我怎样才能以最简单的方式做到这一点?

这是我尝试过的一件事:

<script>

var query = window.location.hash;

document.cookies = 'anchor=' + query[1];

<?php if (!$_COOKIE['anchor']) : ?>

window.location.reload();

<?php endif; ?>

<?php

echo $_COOKIE['anchor'];

?>

3 个答案:

答案 0 :(得分:1)

大多数使用此片段的网站(如Facebook)将使用JavaScript AJAX调用(取决于location.hash)将其请求发送到服务器。试试吧!

var xhr = new XMLHttpRequest();
xhr.open("GET","something.php?hash="+location.hash.substr(1),true);
xhr.onreadystatechange = function() {
    if( this.readyState == 4 && this.status == 200) {
        // do something with this.responseText
    }
};
xhr.send();

答案 1 :(得分:1)

URL的哈希部分不会发送到服务器,因此您需要自己执行此操作。

客户端设置的cookie也不会发送到服务器;客户端在与服务器通话时只记得它们。

这意味着您必须像在现在一样使用Javascript进行检索,并进行显式调用。

 // Example in jQuery
 jQuery.ajax({
     type: "POST", 
     url: "/path/to/php/script.php", 
     data: {
         hash: window.location.hash
     }
 });

然后在script.php中,您收到一个$_POST['hash']变量,并可以将其存储在会话中。但请记住,当您这样做时,发送页面已经加载并被“停止”。如果你想触发重载,你需要发回某种响应并在jQuery的返回函数中对它作出反应。

答案 2 :(得分:0)

你做不到。 hashtags不会飞到服务器。这就是为什么MEGA网站还活着的原因。哈希仅在浏览器中存在。