当我使用包含#符号的jquery Ajax请求一个url时,#之后的url字符串被截断。例如:
http://somesitem.com/?name=Some#thing
当我在萤火虫中观察到这个网址时,我发现所有提交的内容都是:
http://somesitem.com/?name=Some
我尝试使用encodeURI功能但没有成功。
有关如何提交包含#?
的整个字符串的任何提示答案 0 :(得分:2)
encodeURI不会删除“#”。你需要使用encodeURIComponent
encodeURIComponent('Some#thing')
这应该产生这样的东西:
Some%23thing
答案 1 :(得分:1)
尝试将'#'替换为'%23'。 。
答案 2 :(得分:0)
这可能是因为#
字符具有特殊含义。它基本上是一个保留字符。我可能只是建议您使用不同的角色来处理它。
答案 3 :(得分:0)
片段标识符永远不会传递给服务器。如果要将其发送到服务器,则需要先将现有片段转换为标准url参数。
var url = window.location;
//url = http://somesitem.com/?name=Some
url += '&hash='+window.location.hash;
//url = http://somesitem.com/?name=Some&hash=thing
$.get(url);
片段标识符的功能与其余部分不同 URI:即它的处理完全是客户端,没有 来自服务器的参与 - 当然服务器通常有帮助 确定MIME类型,并确定MIME类型 处理碎片。 当代理(例如Web浏览器)时 从Web服务器请求资源,代理将URI发送到 服务器,但不发送片段。相反,代理等待 服务器发送资源,然后代理处理 资源根据文档类型和片段值
答案 4 :(得分:0)
http://api.jquery.com/category/selectors/
JQuery文档中的特殊字符包括#
它说在JQuery中使用两个\来逃避(我相信在javascript中只有一次)。