Обновление кнопки facebook like с помощью Ajax

#jquery #facebook #facebook-like #meta-tags #facebook-opengraph

#jquery #Facebook #facebook-нравится #мета-теги #facebook-opengraph

Вопрос:

Я только что закончил небольшой веб-сайт, на 100% основанный на ajax.Но у меня проблема с обновлением ссылок на кнопки Facebook Like.

Я использовал просто сгенерированный facebook код и включил мета-теги graph. когда пользователь нажимает кнопку, он загружает новое видео на YouTube, я обновляю мета-тег

 <meta property="og:url" content="http://www.mySite.com/"/>
  

используя jQuery таким образом :

 $("meta[property=og:url]").attr("content", nUrl);
  

nUrl — это новый URL-адрес страницы, содержащий новое случайно выбранное видео.

Когда я нажимаю «Нравится», он просто захватывает нажатый «Нравится», он просто захватывает исходное содержимое мета-тега og: url, а теперь новое, установленное ajax. Как обновить с помощью javascript URL кнопки like? Что не так в том, что я сделал? Спасибо

Ответ №1:

Итак, вот что я сделал, чтобы решить мою проблему для других людей, у которых есть то же самое: добавьте это на свой сайт :

 <html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:og="http://ogp.me/ns#"
  xmlns:fb="http://www.facebook.com/2008/fbml" >
  

Это добавит fbml на ваш сайт. Затем используйте версию кнопки «Нравится» в формате FBML (или систему комментариев, или что-то еще), например, я использовал это :

 <span id="fbLike"><fb:like href="http://www.your-site.com?v=1" send="false" layout="button_count" width="80" show_faces="true"></fb:like></span>
  

Теперь, чтобы иметь новую кнопку facebook like каждый раз, когда пользователь выполняет действие Ajax, просто добавьте этот код jquery туда, где вы когда-либо обрабатывали это действие в своем клиентском коде:

 var nUrl = "http://www.your-site.com?v=" toPlayId.substring(1);
$( '#fbLike' ).html('<fb:like href="' nUrl '" send="false" layout="button_count" width="80" show_faces="true" />');
        if (typeof FB  != "undefined"){
        FB.XFBML.parse(document.getElementById('fbLike'));} 
  

По сути, вы просто заменяете место, где находится ваша кнопка, на новую.
nUrl — это новая ссылка, на которую вы хотите, чтобы указывала ваша новая кнопка.
Вам не нужен реальный новый URL, просто добавьте параметр к URL, чтобы ваш ajax знал, что отображать, когда он найдет параметр.
Вот и все.

Комментарии:

1. Это было не совсем то, что я искал, но часть об использовании FB.XFBML.parse наконец-то нажал. Переписать html внутри span — это гениально, чтобы получить новую кнопку «Нравится».

Ответ №2:

Не изменяйте мета-теги с помощью AJAX или javascript. Настройте сценарии на стороне сервера, чтобы правильно установить их в первый раз.

Когда вам нравится / поделитесь URL-адресом на Facebook, Facebook отправит HTTP-запрос к URL-адресу и проанализирует мета-теги, которые он видит.

Комментарии:

1. да, но кнопка «Нравится» должна указывать на правильный URL страницы, если она просто указывает you-fake.com я не могу знать, какое видео понравилось пользователю, чтобы установить правильный мета-тег

2. Да, именно поэтому я сказал о серверных сценариях. Я использую переменные GET для определения логики на стороне сервера для настроек мета-тегов.

Ответ №3:

Вы не можете обновить тег OG с помощью Javascript. Facebook отправит запрос на ваш сервер, и он должен вернуть теги OG, которые представляют этот объект.

Вам нужно будет создать URL-адрес для каждого объекта на вашем сайте — что-то вроде:

 http://www.yoursite.com/video/VIDEO_ID
  

Когда ваше видео на странице изменяется с помощью Ajax, вы отображаете новую кнопку «Нравится», которая указывает на URL, подобный этому. Нажатие на этот URL без JS должно отображать правильные теги OG — именно так Facebook увидит вашу страницу. Затем вы можете добавить перенаправление javascript (window.top.location = НОВЫЙ URL), чтобы перенаправить пользователя на видеоплеер на основе ajax.