2012-05-22 25 views
0

您的網址我知道$_GET["whatever"]得到?whatever=*獲得一個#出PHP

有沒有辦法讓#變量出來的url:

www.*.com#imsomething 

?在google上找不到任何結果。

+0

你想要#號消失後的位,或者你想讓它返回,以便你可以使用它的東西? –

+1

不能。 '#'([片段標識符](http://en.wikipedia.org/wiki/Fragment_identifier))部分永遠不會被瀏覽器發送到服務器。 –

回答

2

#之後的部分是URL的客戶端部分,它引用了HTML中的錨點。因此,您只能在此之前檢索所有內容。

客戶端在檢索文檔時不應該向服務器發送URI片段,也沒有本地應用程序的幫助,片段不會參與HTTP重定向。

〜維基百科:http://en.wikipedia.org/wiki/Fragment_identifier


您可以使用該Javascript代碼來獲得它的內容客戶端:

var hash = window.location.hash; 

抓住它後,你當然可以將其發送到您的服務器端代碼使用jQuery的$ .ajax或類似的東西。

+0

這會觸發301 ..還是ajax不知道該怎麼辦? 我不想使用JavaScript重定向402。 – Jimmyt1988

+0

如果您使用類似$ .ajax或$ .get的東西,它會返回它被重定向到的頁面的內容 - 您的javascript所在的頁面將不會被重定向 – Jeroen

0

不,這對於服務器端語言來說是不可能的......您需要JavaScript來閱讀它。

+0

這個的任何例子? – Jimmyt1988

+0

@JamesT self.document.location.hash,self.document.location.hash.substring(1)如果你想要不帶散列的返回值。 –

+0

@JamesT如果你真的想要在服務器端(PHP)處理哈希,你可以使用Ajax ... window.location.hash會在JavaScript中爲你提供哈希文本,你需要通過Ajax發送它到一個PHP頁面來處理它。 –

2

不,沒有,因爲這是從來沒有發送到服務器端。這是隻在瀏覽器上可見的東西。

你可以用javascript讀取它,然後提交給服務器端,如果你真的想,但通常它不會被髮送。使用JavaScript,您可以閱讀window.location.hash以獲取該值。