我需要在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'];
?>
答案 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网站还活着的原因。哈希仅在浏览器中存在。