在jQuery ajax请求中包含#时的URL断开

时间:2012-08-22 19:16:42

标签: javascript jquery

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

http://somesitem.com/?name=Some#thing

当我在萤火虫中观察到这个网址时,我发现所有提交的内容都是:

http://somesitem.com/?name=Some

我尝试使用encodeURI功能但没有成功。

有关如何提交包含#?

的整个字符串的任何提示

5 个答案:

答案 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发送到   服务器,但不发送片段。相反,代理等待   服务器发送资源,然后代理处理   资源根据文档类型和片段值

http://en.wikipedia.org/wiki/Fragment_identifier

答案 4 :(得分:0)

http://api.jquery.com/category/selectors/

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

它说在JQuery中使用两个\来逃避(我相信在javascript中只有一次)。