我正在尝试通过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
- 为什么它会被切断?
答案 0 :(得分:2)
为什么它的一部分会被切断?
因为参数包含 f = new File(Main.getInstance().getDataFolder() + File.pathSeparator + "playerdata", uuid.toString() + ".yml");
d = YamlConfiguration.loadConfiguration(f);
。如果您的网址中有一英镑,则不会将其视为GET参数的一部分,而是fragment identifier。看看那里的部分与#
前面的部分是一样的?那是因为浏览器在它是
该语法 - “#
标识片段后的任何内容” - 意味着您不能在GET参数中包含该字符。
但是,您可以percent-encode,这意味着您的网址将如下所示
#
而不是你拥有的。请注意http://localhost/app_yy/public/hotel/cancel?AvailSply=ID_B2B_20%23RA1B2BHB
而不是%23
- 解码后会转换为#
,但不会触发片段标识符解析。
有很多库可以对URL进行编码 - 例如,在PHP中,您可以使用urlencode
和urldecode
。
维基百科的文章很好地描述了片段标识符是什么,但在外行的英语中,片段标识符标记了您想要去的页面中的位置。如果您想要链接到文档中的子标题或页面中的选项卡,这将非常有用。但是,在这里,它不是你想要的。
答案 1 :(得分:1)
在URL中,标记了数字符号(#)哈希值或指向ancors的链接 如果您希望将#作为GET参数值传输,则必须将其转义:
逃逸(值)
...?AvailSply = ID_B2B_20%23RA1B2BHB