如何在Perl CGI中获取'#'之后的参数?

时间:2011-12-06 11:28:41

标签: perl url parameters cgi

我们如何从下面提到的url中获取文件夹的值:

http://my.indiamart.com/cgi/​my-enquiries.mp#folders=1

我已经尝试了CGI对象,%ENV变量以及很多东西,但仍然无法获得它。

请建议..

3 个答案:

答案 0 :(得分:15)

您不能,浏览器解释片段(#folders=1)而不将其发送到服务器。因此,如果http://my.indiamart.com/cgi/​my-enquiries.mp是您的脚本,那么它将永远不会看到URL的#folders=1部分,因为浏览器不会发送它。如果您需要服务器上的片段,则必须将其更改为CGI参数:

http://my.indiamart.com/cgi/​my-enquiries.mp?folders=1

或将其嵌入到URL路径中,如下所示:

http://my.indiamart.com/cgi/​my-enquiries.mp/1
http://my.indiamart.com/cgi/​my-enquiries.mp/folders=1

答案 1 :(得分:2)

你不能,#只能被JavaScript识别,
apache会忽略这个,这就是它不包含ENV变量中的任何值的原因。

您可以使用JavaScript:window.location.hash来捕获此哈希值。

答案 2 :(得分:0)

仅使用 javascript。 您可以使用类似的东西重定向到另一个脚本

<script>                                                                                                                                                                                                           
if(window.location.hash) {                                                                                                                                                                                         
  var str = window.location.hash.substring(1);                                                                                                                                                                     
  window.location.href = 'http://other_script.pl?param=' + str;
}                                                                                                                
</script>