2012-06-14 20 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)。