2014-02-18 48 views
0

我需要在url(http://www.example.com/#TEXT)中獲得hashtag後面的文本,所以我可以在php腳本中使用它。我知道我必須使用JavaScript收集文本,然後將其保存爲cookie或類似的東西。唯一的問題是,我不擅長JavaScript,我試過但失敗。我需要一個來自url中的hashtag值php

我怎樣才能做到這一點最簡單的方法?

這裏有一件事我曾嘗試:

<script> 

var query = window.location.hash; 

document.cookies = 'anchor=' + query[1]; 

<?php if (!$_COOKIE['anchor']) : ?> 

window.location.reload(); 

<?php endif; ?> 

<?php 

echo $_COOKIE['anchor']; 

?> 
+1

它不叫「哈希標籤」,它是一個片段標識符。 「hashtag」一詞僅指它在社交媒體中的使用。 – Dai

+0

@Dai或哈希例如'location.hash' – Johan

回答

1

大多數使用此類片段的網站(例如Facebook)將使用JavaScript AJAX調用(取決於location.hash)將其請求發送到服務器。試試看!

var xhr = new XMLHttpRequest(); 
xhr.open("GET","something.php?hash="+location.hash.substr(1),true); 
xhr.onreadystatechange = function() { 
    if(this.readyState == 4 && this.status == 200) { 
     // do something with this.responseText 
    } 
}; 
xhr.send(); 
0

你不能。哈希標籤不會飛到服務器。這就是爲什麼MEGA網站還活着。哈希只存在於瀏覽器中。

+0

很容易降級。比提供替代答案容易。更糟糕的是,當我的回答是真實的:hashtags不會作爲url請求的一部分發送。 –

+0

你「需要一個來自php中url的hashtag值」(正如你在降級評論中所說的那樣)......從你暴露的javascript代碼發送來的?你處於錯誤的狀態。 如果你找到一個庫,那麼你可以在PHP中解析一個URL,ALREADY有碎片/散列。但是你不能接收散列作爲請求URL的一部分! –

+0

儘管不連貫的句子和散亂,這個答案有正確的觀點:文件片段標識符永遠不會發送到服務器,因此服務器不能看到它。 –

1

的URL的哈希部分不會被髮送到服務器,所以你必須這樣做自己。

客戶端設置的cookie也不會發送到服務器;客戶端在與服務器通信時只會記住它們。

這意味着您必須使用Javascript進行檢索,就像您已經做過的那樣,並進行明確的調用。

// Example in jQuery 
jQuery.ajax({ 
    type: "POST", 
    url: "/path/to/php/script.php", 
    data: { 
     hash: window.location.hash 
    } 
}); 

然後在script.php您收到$_POST['hash']變量,可以將其存儲在會話。但請記住,當你這樣做時,發送頁面已經被加載並且「停止」。如果你想觸發一個重載,你需要發回一些響應,並在jQuery的返回函數中作出反應。

相關問題