我想使用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方法之前对字符串进行编码。
要对查询字符串进行编码,您可以:
urlencode()
,urldecode()
可以解码字符串。encodeURIComponent()
,decodeURIComponent()
可以解码字符串。答案 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中传递#的常用技术。