2012-11-13 37 views
0

我創建了一個視頻頁面,使用數據庫動態加載視頻,而文件存儲在服務器上。視頻預先加載在頁面上,並且數據可以被喜歡併發布到Facebook上,而不會有任何問題。點擊新的縮略圖時,我希望Facebook Like信息更改爲新的視頻內容(標題,網址和圖像)。 我找了一個解決方案,並且有許多類似的解決方案,但他們添加FB.XFBML.parse();的簡單解決方案對我來說並不合適。 更新我的meta標籤,當Ajax調用回來成功使用:Facebook更新通過Ajax - 不是簡單的問題

$("meta[property=og\\:title]").attr('content', videoTitle); 
$("meta[property=og\\:url]").attr('content', "www.mySiteURL.com/index.php?videoID="+videoID); 
$("meta[property=og\\:image]").attr('content', "www.mySiteURL.com/images/video/"+videoImageName); 

但是當我運行這些設置之後解析的代碼,我看到按鈕刷新,但梁具有相同的內容。 我可以看到meta標籤實際上使用Firebug更新。只是FB按鈕不能正確地重新發送頁面信息發送給FB。我在我的html標籤中設置了命名空間,並且還設置了其他的og:metas,但這些是我需要重新抓取的三個。

我在一篇文章中看到有人在主頁面上直接使用了類似於ajax.complete(function(){FB.XFBML.parse();});的東西,我不記得確切的代碼,但這個想法是一樣的,但它仍然不起作用。我想在我的ajax函數中運行它,成功就足夠了。

我錯過了什麼?

任何幫助將不勝感激!

謝謝。

編輯: 我應該補充一點,每個視頻都有自己的直接URL,插入到og:url中,因爲它們都是通過ajax加載的。 當我使用這些獨特的URL之一時,Facebook Linter/Object Debugger向我顯示每個視頻的所有正確數據,這只是一個刮擦問題 - 至少,由於我對此有限的知識,這就是它對我來說似乎是什麼。

+0

當您爲該視頻添加特定網址時,[Facebook的調試工具](https://developers.facebook.com/tools/debug)是否會獲取標籤?你不是用Javascript創建元標籤,對吧?它看起來在問題中看起來很像,但是你也會說每個視頻都有自己的URL--所以URL應該將meta標籤返回給抓取工具,並且你會將類似按鈕指向該URL,並且將Like動態按鈕,而不是頁面上的元標記 – Igy

+0

謝謝!我瞭解到,我只需更改元標記,並完全忽略更新Like按鈕代碼中的href。我現在更新該代碼,解析完美。我的meta標籤已經存在,只能通過jQuery進行更改 - 不過現在不是那麼重要。 如果您將您的評論發佈爲解決方案,我可以接受它作爲最佳解決方案。 再次感謝! – acarito

+0

當然;我會去做 – Igy

回答

1

這聽起來像你可能已經改變動態當前頁面的meta標籤 - 這是沒有必要的,會導致與Facebook的刮的問題(你可以驗證使用Facebook's Debug Tool) -

保持一個靜態的URL每個對象提供來自該URL的元標記(如果需要,可以重定向其他瀏覽器),並在動態頁面上將Like按鈕本身更改爲指向當前顯示的對象的URL(即移除類似按鈕,添加新的FB:喜歡標記和重新呼叫FB.XFBML.parse();

1

我要補充的是每個視頻都有插入OG自己直接的網址:網址,因爲它們都通過Ajax加載。當我使用這些獨特的URL之一時,Facebook Linter/Object Debugger向我顯示每個視頻的所有正確數據,這只是一個刮擦問題 - 至少,由於我對此有限的知識,這對我來說似乎是這樣。

不,這不是一個問題,刮 - 因爲刮不關心你的JavaScript,因此不會看到meta標籤更新客戶端。它向你的服務器發出一個HTTP請求,所以你在任何一種當前正在顯示頁面的客戶端中所做的事情都是無關緊要的。

你需要做的是更新像按鈕所指向的目標URL:用包含當前視頻頁面URL的href屬性替換現有的像按鈕代碼,運行FB.XFBML.parse on它 - 然後它會按預期工作。