2014-03-24 27 views
0

我有一個問題(顯然), 我已經做了一個表單,在AJAX中發送數據。 成功時,我從我的請求中獲取返回值,並將其附加到og標記內容中。 例如更改元Facebook的og與jQuery

$('meta[property="title"]').attr('content', data.title); 

什麼,當我在我的鉻控制檯檢查元素,這些變化在完成後。 但是,如果我點擊Facebook分享按鈕,它並不關心我的更改... 最後,我想要改變的是標籤標題,描述和圖像。

任何解決方案? 謝謝大家。

+0

您需要在服務器端生成此HTML。 Facebook的HTML解析器將不會運行腳本。 –

+0

你的意思是我無法使用AJAX? 該死的.. 或你的意思是我必須在php中創建我的元元素,但我仍然可以使用AJAX,但不是設置元og內容我附加meta有效嗎? – Brazeredge

+0

我的意思是Facebook會要求你使用自己的服務器給它的URL,並解析HTML請求吐出的任何HTML。它不會運行*任何*腳本或做任何其他事情。你需要想出一個適用於這種設計的方法。 –

回答

2

當頁喜歡引用在Facebook上,Facebook的請求從他們的最終的URL,下載HTML,並使用其解析一個尋找OpenGraph標籤的簡化的HTML解析器。

因此,只有由服務器直接生成的HTML纔會被Facebook看到。 HTML中嵌入的任何JavaScript都不會運行,也不會加載頁面引用的任何資源。

您需要找出某種方式通過操作URL來傳達信息;如添加URL參數,爲內容分配固定鏈接,使用Web服務器上的重寫規則等。

0

一個URL只能有一個opengraph描述。但是,您可以添加一些變量以根據內容更改opengraph標籤。假設您有一個www.example.com頁面並希望共享一些實體。如果你有一個用戶,你可以分享www.example.com?user=[id],設置服務器端代碼來做到這一點:

if (isset($_GET['user'])) { 
    // Opengraph for user 
    // Perhaps you wanna load the user and show his infos. 
} 
if (isset($_GET['team'])) { 
    // opengraph for team 
} 
else { 
    // Default opengraph 
} 

不要忘記,opengraph IMAGE必須在DOM 。您可以隨時添加

<div style="display: none;"> 
<img src="[path to the shared image]" /> 
</div> 

希望幫助

+0

感謝它是有用的,但不完全是我要求。 如果可以,我應該投票;) – Brazeredge