查询串如何工作

时间:2012-06-14 13:17:49

标签: php javascript css css3

这不是最好的问题,但由于搜索引擎觉得需要忽略符号,我不得不问某个地方。

在链接中,我有时会看到一个?,例如[link]/file.extension?some_type_of_info,甚至+,&,=等等(我的意思是最好的例子是youtube视频) 。这些叫做什么,他们做了什么?一个好的网站将是伟大的:)

我最感兴趣的是因为我有一个网站将内容加载到页面中,目前我允许'书签'页面(或者对我来说更重要,能够返回'页面')的方式是使用哈希值代表我的“页面”。

最终我不希望页面刷新,这就是哈希值很好的原因,但是我想要替代方案(不是真正的哈希标记),但大多数不同的浏览器似乎都在考虑分配哈希值在jquery中不同)

再次,对不起,这主要只是一个“这是什么”问题,但如果有人能告诉我使用相关方法与哈希值的利弊,那也会很好:)

5 个答案:

答案 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)。