这不是最好的问题,但由于搜索引擎觉得需要忽略符号,我不得不问某个地方。
在链接中,我有时会看到一个?
,例如[link]/file.extension?some_type_of_info
,甚至+,&,=等等(我的意思是最好的例子是youtube视频) 。这些叫做什么,他们做了什么?一个好的网站将是伟大的:)
我最感兴趣的是因为我有一个网站将内容加载到页面中,目前我允许'书签'页面(或者对我来说更重要,能够返回'页面')的方式是使用哈希值代表我的“页面”。
最终我不希望页面刷新,这就是哈希值很好的原因,但是我想要替代方案(不是真正的哈希标记),但大多数不同的浏览器似乎都在考虑分配哈希值在jquery中不同)
再次,对不起,这主要只是一个“这是什么”问题,但如果有人能告诉我使用相关方法与哈希值的利弊,那也会很好:)
答案 0 :(得分:3)
请参阅the url specification,特别是syntax components部分:
URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
......以及query的定义。
查询组件包含非分层数据,以及
路径组件(第3.3节)中的数据用于识别
URI的方案和命名权限范围内的资源 (如果有的话)。查询组件由第一个问题
指示 标记(“?”)字符并以数字符号(“#”)字符终止 或者在URI的末尾。
最终我想不要刷新页面
使用the history API。这与URL的结构无关(除了必须是同一来源的URL)。
答案 1 :(得分:1)
网址中的?
会引入query string,这是提供给服务器的数据。 ?
之前的所有指定服务器上的资源(理论上),之后的所有都是附加数据。
例如:
http://example.com/foo/bar/page.php?data=one http://example.com/foo/bar/page.php?data=two
两个URL都会导致服务器检索page.php
页面,因为它是一个PHP页面,正确配置的服务器将在其中运行PHP代码。 PHP代码可以通过$_SERVER['QUERY_STRING']
将查询字符串数据作为一个大字符串访问,或者作为一系列名称/值对访问(如果它是这样的话,它不会拥有 )通过$_GET['paramname']
。请注意,这是_GET
,因为查询字符串参数是GET
参数; POST
参数通过不同的机制发送(不仅适用于链接;您需要表单或类似内容)。
答案 2 :(得分:1)
?
之后的部分称为查询字符串。它用于将参数传递到网站。使用&
符号分隔参数。例如,这会将参数传递给站点:
http://test.site.tld/index.php?parameter=value&another=anotherValue
这会将参数“parameter”(值为“value”)和参数“another”(值为“anotherValue”)传递给脚本index.php
。
+
符号有时用于表示空格。例如,“Hello World”可以表示为“Hello + World”或“Hello%20World”。
#
符号用于直接跳转到页面内的锚点。例如
http://test.site.tld/index.php#docs
将跳转到网站内的主播“docs”。
答案 3 :(得分:0)
网址末尾的内容是querystring。 ?
用于表示查询字符串的开头,它们使用由key=value
分隔的&
个对。
要解决您是否可以将其用于书签的问题,我相信您目前使用的网址哈希值(#
)是正确的。
答案 4 :(得分:0)
? part是一个查询字符串,GET参数以这种方式发送。
您问题中更有趣的部分是:如何在动态网站中为用户启用后退按钮/历史记录?看看这个图书馆:https://github.com/browserstate/History.js/
它使您(对于较新的浏览器)能够获取/设置历史状态。每个动态页面都有自己的地址。对于旧版浏览器,有hash-bang fallback(#/ page / page)。