【问题标题】:How to obtain anchor part of URL after # in phpphp中#后如何获取URL的锚点部分
【发布时间】:2009-06-23 12:27:56
【问题描述】:

在我的项目中使用 LightBox 机制时,我得到了一个 URL http://nhs/search-panel.php#?patientid=2 我需要通过 GET 机制从这里收集那个耐心 ID,这可能在 PHP 中吗?

【问题讨论】:

  • 问题是 # 阻止我这样做......

标签: php


【解决方案1】:

简单地说:你不能!浏览器不会将请求中的片段(哈希标记之后的 URL 部分)发送到服务器。您必须依赖一些客户端 javascript:也许您可以在使用之前重写 url。

【讨论】:

    【解决方案2】:

    也许其他人都是对的,一个简单的 $_GET 就足够了,但是如果你的 URL (http://nhs/search-panel.php#?patientid=2) 中的 # 应该在那里,你将不得不使用 JavaScript(和 Ajax,例如 JQuery)来做到这一点,因为 # 之后的所有内容据我所知,未包含在请求中。

    【讨论】:

    • 他是对的,# 之后的所有内容都无法通过 php 访问,您必须在 javascript 中进行操作
    【解决方案3】:

    如果您检查您的服务器日志,您应该会看到没有浏览器实际传输请求的 URL 的#anchor 部分,因此您无法在服务器端获取它。

    如果您需要了解它,您需要编写一些 Javascript 来从 document.location.href 中提取它并将其发送到您的服务器,方法是将其转换为常规 GET 参数并重定向用户,或者在后台使用 XMLHttpRequest/AJAX。

    【讨论】:

      【解决方案4】:

      编辑:糟糕,这行不通。其他张贴者说哈希之后的任何内容都不会到达您的服务器是正确的。

      你应该这样做:

      //Get complete URI, will contain data after the hash
      $uri = $_SERVER['REQUEST_URI'];
      
      //Just get the stuff after the hash
      list(,$hash) = explode('#', $uri);
      
      //Parse the value into array (will put value in $query)
      parse_str($hash, $query);
      
      var_dump($query);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-15
        • 2013-11-01
        • 1970-01-01
        • 2011-04-02
        • 2017-04-03
        • 2011-10-22
        相关资源
        最近更新 更多