1

我想#var从 url 中获取价值,就像我的 url 一样,mydomain.com/index.php#1所以我想从 url 中获取 has(#) 值,1经过一些研究,我得到了这篇文章http://www.stoimen.com/blog/2009/04/15/用 php 读取 url 的锚部分/

我将此代码用于获取 has(#) 值,这在其中可以正常工作,但在我的代码中JavaScript 不起作用是:php

<script language="javascript">
var query = location.href.split('#');
document.cookies = 'anchor=' + query[1];
alert(query[1]);
</script>
<?php
echo $_COOKIE['anchor'];
?>

这段代码给了我alert价值,JavaScript但没有echo价值。有什么解决方案吗?

4

5 回答 5

1

在下一个页面请求之前,您设置的 cookie 对 PHP 不可见。您链接到的文章明确说明了这一点

当然,是的。这无法正常工作。事实上,它从第二次加载开始就可以正常工作,但是在页面的初始加载时,$_COOKIE 数组内部没有任何锚键。这是因为这部分代码是在浏览器在客户端设置 cookie 之前执行的。

那篇文章中有一个“解决方法”,但坦率地说:这种事情是垃圾,如果您希望 PHP 读取它,您不应该(仅)将此信息放在查询片段中。

于 2012-05-25T07:38:37.737 回答
1

通过您发送的文章,您必须执行如下重定向:

<?php if (!$_COOKIE['anchor']){ ?>
<script language="javascript">
  var query = location.href.split('#');
  document.cookie = 'anchor=' + query[1];
  window.location.reload();
</script>
<?php } ?>

<?php
echo $_COOKIE['anchor'];
?>
于 2012-05-25T07:38:44.323 回答
1

此外,您似乎在 JS 中设置了错误的属性(它是.cookie,不是.cookies):

document.cookie = 'anchor' + query[1];
于 2012-05-25T07:42:56.863 回答
0

您正在设置一个在下次重新加载之前不会传递给 php 的 cookie。我错了吗?

客户动态是链条的末端。

于 2012-05-25T07:34:54.823 回答
0

使用此方法来防止错误:

<script> 
query=location.hash;
document.cookie= 'anchor'+query;
</script>

当然,在 PHP 中,炸掉那只小狗并获得其中一个值

$split = explode('/', $_COOKIE['anchor']);
print_r($split[1]); //to test it, use print_r. this line will print the value after the anchortag
于 2017-03-07T03:00:54.447 回答