2012-06-14 19 views
0

这不是有史以来最好的问题,但由于搜索引擎觉得需要忽略符号,我不得不问一个地方。querystring如何工作

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

我最感兴趣,因为我有一个网站,加载到网页的东西,目前我允许'书签'的网页(或更重要的是,能够返回一个'页面')是使用散列值来表示我的'页面'。

最终我不想刷新页面,这就是为什么散列值很好,但我想要替代品(如果有的话)(不是真正的散列标记是什么意思,但大多数不同的浏览器似乎认为分配散列在jquery中的值有所不同)

再一次,对不起,这主要只是一个“这是什么”的问题,但如果任何人都可以告诉我使用有问题的方法与散列值的优点/缺点,那也会很棒:)

+2

'?'后面的字符串被称为查询字符串 – fcalderan

+0

可能是显而易见的,但为了完整性:[Wikipedia article on query string](http://en.wikipedia.org/wiki/Query_string)。 – Carsten

+0

阅读关于如何轻松地在php中使用查询变量:http://www.php.net/manual/en/reserved.variables.get.php – biziclop

回答

3

the url specification,尤其是部分syntax components

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

...和query定义。

查询组分含有非分层数据,与在路径构件
数据(第3.3节)沿,用于将URI的方案的范围内识别
资源和命名授权
(如果有的话)。查询组件由第一个问题
标记(“?”)字符指示,并以数字符号(“#”)字符
或由URI结尾终止。


最后,我想不会有页面刷新

使用the history API。这与URL的结构无关(除了必须是同一来源的URL)。

1

在URL的?介绍query string,该数据提供给服务器。一切之前?指定服务器(理论上)上的资源,一切后,在附加数据。

因此,例如:

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

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

+0

@ thirtydot:谢谢!我甚至没有输入这些,我想我有一个复制粘贴的问题。 :-) –

1

?被称为查询字符串后面的部分。它用于将参数传递给网站。参数使用&符号分隔。例如,这将参数传递到站点:

http://test.site.tld/index.php?parameter=value&another=anotherValue 

这会通过参数“参数”(具有值“值”),将参数“另一个”(具有值“anotherValue”)到脚本index.php

+符号有时被用来表示一个空格。例如,“Hello World”可以表示为“Hello + World”或“Hello%20World”。

#一个符号被用于直接跳转到页内的锚固件。例如

http://test.site.tld/index.php#docs 

会跳到网站中的锚点“文档”。

0

url结尾处的东西是querystring?用于表示查询字符串的开始,它们使用key=value对由&分开。

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

0

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

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

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