1

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

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

当我观察到在 firebug 中请求此 url 时,我看到提交的所有内容是:

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

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

有关如何提交包含 # 的整个字符串的任何提示?

4

5 回答 5

2

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

encodeURIComponent('Some#thing')

这应该会产生这样的结果:

Some%23thing
于 2012-08-22T19:26:12.980 回答
1

尝试将 '#' 替换为 '%23'。.

于 2012-08-22T19:27:01.297 回答
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

于 2012-08-22T19:27:06.283 回答
0

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

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

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

于 2012-08-22T19:28:58.753 回答
0

这可能是因为这个#角色有特殊的含义。它基本上是一个保留字符。我可能只是建议您使用不同的字符来使用它。

于 2012-08-22T19:25:10.160 回答