2010-01-07 68 views

回答

8

不,因爲url的哈希部分只是客戶端,並且不會發送到服務器。

當您在瀏覽器的URL文本框中輸入URL(如http://server.com/dir/file.php?a=1#something)時,瀏覽器會打開與server.com的連接,然後發出HTTP命令GET /dir/file.php?a=1 HTTP/1.1。這是發送到服務器的唯一數據。 因此,服務器永遠不會獲得#something部分,這意味着服務器端沒有可以寫入的腳本來讀取該值。

類似的問題在這裏解釋:How to get Url Hash (#) from server side

+0

感謝您的及時答覆naivists – Andy 2010-01-07 19:24:26

+0

+1,絕對正確。但是,下面是一個讓事情看起來十分混亂的例子:http://www.google.com/#q=test。由於一些聰明的JavaScript,Google似乎會彎曲這些規則。如果清除緩存並觀看LiveHTTPHeaders,則發送/(無片段)請求,該請求會加載JavaScript,從而觸發對實際搜索結果數據的請求(該請求的查詢字符串是從Window中的片段讀取的。位置(?)使用javascript):GET/search?q = test&fp = 1&cad = b HTTP/1.1。我肯定有一些有趣的原因,谷歌這樣做的事情。 – 2010-01-07 21:53:49

+0

@naivist有趣。我確信之前在服務器端的URL中看到過這個片段,但是你是對的,因此我刪除了我的答案。現在我只需要找到說明爲什麼它是這樣的RFC。畢竟,這是一個有效的URI組件。 – Gordon 2010-01-07 22:25:30

-4

呀,有一種方法。我想你想要做的是:

$arValues = array_values($_GET); 
// whatever else you want to do with the values 
+0

他想獲取URL片段。他的意思是?=是常規參數,例如富=巴。但他在#後查找URL中的值。 – Gordon 2010-01-07 19:52:48

+0

正確。我選擇使用正常的?=變量 – Andy 2010-01-09 17:38:38

0

我已經能夠通過獲得通過JavaScript片段和發送與片段作爲$ _GET內容的Ajax請求解決它。

0

不知道你的整個案例,我可能會偏離軌道,但有可能通過簡單的GET類型的xmlhttprequest將#something發送到服務器。