0

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

在链接中,我有时会看到一个?,例如[link]/file.extension?some_type_of_info,甚至是 +、&、= 等(我的意思的“最佳示例”是 youtube 视频)。这些叫什么,它们做什么?一个好的网站会很棒:)

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

最终我不想刷新页面,这就是哈希值很好的原因,但如果有的话,我想要替代品(不是真正的哈希标记,但大多数不同的浏览器似乎以不同的方式处理在 jquery 中分配哈希值)

再次,抱歉,这主要只是一个“这是什么”问题,但如果有人能告诉我使用所讨论的方法与哈希值相比的优缺点,那也很好:)

4

5 回答 5

3

请参阅url 规范,特别是部分语法组件

  URI         = scheme ":" hier-part [ "?" query ] [ "#" fragment ]

…以及query的定义。

查询组件包含非分层数据,这些
数据与路径组件(第 3.3 节)中的数据一起用于标识URI 方案和命名权限 (如果有)
范围内的资源。
查询组件由第一个
问号 ("?") 字符指示,并以数字符号 ("#") 字符
或 URI 结尾终止。


最终我不想刷新页面

使用历史 API。这与 URL 的结构无关(除了必须是同源的 URL)。

于 2012-06-14T13:22:02.873 回答
1

URL 中的?引入了查询字符串,它是提供给服务器的数据。之前的所有内容都?指定了服务器上的资源(理论上),之后的所有内容都是附加数据。

例如:

http://example.com/foo/bar/page.php?data=one
http://example.com/foo/bar/page.php?data=two

这两个 URLpage.php都会导致服务器检索该页面,并且由于它是一个 PHP 页面,因此正确配置的服务器将在其中运行 PHP 代码。该 PHP 代码可以通过 将查询字符串数据作为一个大字符串访问$_SERVER['QUERY_STRING'],或者作为一系列名称/值对(如果是这样,则不必如此)通过$_GET['paramname']. 请注意,这是_GET因为查询字符串参数是GET参数;POST参数通过不同的机制发送(不适用于链接;您需要一个表单或类似的)。

于 2012-06-14T13:20:09.803 回答
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

将跳转到网站内的锚点“文档”。

于 2012-06-14T13:20:45.980 回答
0

url 末尾的东西是一个querystring?用于表示查询字符串的开头,它们使用以 .key=value分隔的对&

为了解决您是否可以将其用于书签的问题,我相信您当前使用 URL 哈希 ( #) 的方法是正确的。

于 2012-06-14T13:22:59.117 回答
0

这 ?部分是查询字符串,GET 参数以这种方式发送。

您的问题中更有趣的部分是:如何在动态网站中为用户启用后退按钮/历史记录?查看这个库:https ://github.com/browserstate/History.js/

它使您(对于较新的浏览器)能够获取/设置历史状态。每个动态页面都有自己的地址。对于较旧的浏览器,有 hash-bang fallback (#/page/page)。

于 2012-06-14T13:23:57.930 回答