Javascript jQuery ajax请求中包含#时URL中断

Javascript jQuery ajax请求中包含#时URL中断,javascript,jquery,Javascript,Jquery,当我使用jquery Ajax请求包含#符号的url时,#之后的url字符串被截断。例如: http://somesitem.com/?name=Some#thing 当我观察到firebug中请求的这个url时,我看到提交的所有内容都是: http://somesitem.com/?name=Some 我尝试使用encodeURI函数,但没有成功 关于如何提交包含#?的整个字符串的任何提示可能是因为字符具有特殊含义。它基本上是一个保留字符。我可能只是建议您使用不同的字符作为任何用途。enc

当我使用jquery Ajax请求包含#符号的url时,#之后的url字符串被截断。例如:

http://somesitem.com/?name=Some#thing
当我观察到firebug中请求的这个url时,我看到提交的所有内容都是:

http://somesitem.com/?name=Some
我尝试使用encodeURI函数,但没有成功


关于如何提交包含#?

的整个字符串的任何提示可能是因为
字符具有特殊含义。它基本上是一个保留字符。我可能只是建议您使用不同的字符作为任何用途。

encodeURI不会删除“#”。您需要使用encodeURIComponent

encodeURIComponent('Some#thing')
这应该会产生如下结果:

Some%23thing

尝试将“#”替换为“%23”

片段标识符永远不会传递给服务器。如果要将其发送到服务器,首先需要将现有片段转换为标准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发送到 服务器,但不发送片段。相反,代理会等待 服务器发送资源,然后代理处理 根据文档类型和片段值选择资源

JQuery文档中的特殊字符包括#


它说在JQuery中使用two\来转义(我相信在javascript中只有一次)。

其他解决方案都不起作用。这很有效。谢谢