如何使用php和javascript获取mysite.com/myaction/#someanchor等参数

时间:2009-04-03 21:58:46

标签: php javascript

例如,我默认隐藏评论。

所以,如果我发现#comments,我会知道我需要展示它们。

是否有可能在页面加载时使用php或javascript捕获?

4 个答案:

答案 0 :(得分:2)

使用JavaScript,您可以访问location.hash属性。

window.onload = function(){
  alert(location.hash);
}

答案 1 :(得分:1)

PHP不会知道#comments位,所以你必须使用javascript来实现这个功能

答案 2 :(得分:0)

在php中,您可以使用parse_url()函数访问URL的所有部分 http://php.net/parse-url

<?php
  $url = 'http://username:password@hostname/path?arg=value#anchor';

  $url = parse_url( $url );

  echo $url['fragment'];  // will output 'anchor'
?>

修改 我很抱歉,虽然我的例子很有效,但对于服务器端生成的网址来说很好,但在这个问题的背景下你是正确的。片段不是我广泛使用的方法,虽然我经常使用parse_url所以它会立即浮现在脑海中。

为了给这个特定问题提供一些增值内容,我会使用jQuery来揭示最初隐藏的评论。如果你正在寻找那种东西,它很容易使用并且有一些光滑的动画。

e.g。

<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
    $(document).ready( function() {
        $("a.toggleComments").click( function() {
            $(".comment").toggle();
            return false;
        });
    });
</script>
<style>
    .comment {
        display: none;
    }
</style>
</head>
<body>
  <p>Some text that is shown by default. <a href="#" class="toggleComments">Toggle Comments</a></p>
  <p class="comment">A comment paragraph, originally hidden</p>
</body>
</html>

答案 3 :(得分:0)

遗憾的是,PHPExperts错了..

任何网址的#fragmant部分实际上都没有发送到服务器。在执行请求时,浏览器将在#之后删除所有内容。

dcaunts建议是在正确的轨道上,你真的只能在javascript中使用它。