>我正在尝试通过GET发送参数。
这是我的网址:
http://localhost/app_yy/public/hotel/cancel?AvailSply=ID_B2B_20#RA1B2BHB
这是print_r
函数的结果:
Array
(
[AvailSply] => ID_B2B_20
)
然而,我被期望AvailSply
ID_B2B_20#RA1B2BHB
- 为什么它的一部分被切断了?
问题
为什么它的一部分被切断了?
因为该参数包含一个#
.如果您的 URL 中有磅,则不会将其视为 GET 参数的一部分,而是片段标识符。看看那里的部分与#
前面的部分如何相同?那是因为浏览器在它是
该语法 - "#
之后的任何内容标识片段" - 意味着您不能在GET参数中包含该字符。
解决方案
不过,您可以对其进行百分比编码,这意味着您的 URL 将如下所示
http://localhost/app_yy/public/hotel/cancel?AvailSply=ID_B2B_20%23RA1B2BHB
而不是你拥有的。请注意%23
而不是#
- 解码后会变成#
,但不触发片段标识符解析。
有很多库可以对东西进行URL编码 - 例如,在PHP中,您可以使用urlencode
和urldecode
。
维基百科的文章很好地描述了片段标识符是什么,但在外行的英语中,片段标识符标记了你想去的页面。例如,如果您想链接到文档中的副标题或页面中的选项卡,这将非常有用。但是,在这里,这不是您想要的。
在URL中,带有数字符号(#(的哈希或指向ancors的链接被标记.
如果您希望将 # 作为 GET 参数值传输,则必须对其进行转义:
- 在Javascript中:
转义(值(
- 手动(%23 代表 #(:
....?AvailSply=ID_B2B_20%23RA1B2BHB