如何使用GET方法发送包含'#“的字符串?

时间:2016-07-27 04:19:49

标签: php html post

我想使用GET方法将字符串发送到接收页面,但如果字符串包含“#”,则接收方页面只能获取“#”之前的子字符串。 如下例所示:

<a href="test.php?q=string1#string2">test</a>

点击'test'链接打开'test.php'页面,其中包含以下代码:

<?php
if(isset($_GET["q"])) {
echo $_GET["q"];
} 
?>

它只在页面上显示'string1','#string2'缺失。

所以我想知道字符串发生了什么,以及如何解决这个问题。

感谢您的帮助!

=======更新===========

在@Eric Shaw和@JPDupéré的帮助下,我知道如何解决这个问题。

最简单的方法是在使用get方法之前对字符串进行编码。

要对查询字符串进行编码,您可以:

  1. 在PHP中使用urlencode()urldecode()可以解码字符串。
  2. 在JavaScript中使用encodeURIComponent()decodeURIComponent()可以解码字符串。

2 个答案:

答案 0 :(得分:1)

尝试

$(document).ready(function () {
                    $('.purpose').on('change', function () {
                        if (this.value == 'Perfect')
                        {
                            $(this).parents(".select_container").find("#health").hide();

                        } else
                        {
                            $(this).parents(".select_container").find("#health").show();
                        }
                    });
});

在致电GET之前。

答案 1 :(得分:1)

http://server:5002/app.js用于跳转到页面上的#foo标记,而不是在浏览器加载时查看页面顶部。

#之后的内容由浏览器处理,而不是发送到服务器。

您可以转义#并将转义的版本发送到服务器,即

<a name="foo"/>

会做你想要的事情

这种转义也是在重定向器的URL中传递#的常用技术。