Я решаю очень странную проблему с обратным вызовом edge.create.
Что я делаю, так это выполняю ajax-вызов на сервер каждый раз, когда происходит событие edge.create или edge.remove (сначала это нравится, а второе - не похоже на страницу).
Вот код
// this will fire when any of the like widgets are "liked" by the user
FB.Event.subscribe('edge.create', function(href, widget) {
var dataSend = 'ajaxFace=true&submitAdd=true&code='+SomeCodeToAdd;
$.ajax({
type: 'POST',
url: 'http://somewebpage.com',
data: dataSend,
success: function(data) {
alert(data);
},
erro: function(data) {
alert('Try again later');
}
});
});
//this will fire when any widgets are "disliked" by the user
FB.Event.subscribe('edge.remove', function(href, widget){
var dataSend = 'ajaxFace=true&submitDelete=true&code='+SomeCodeToRemove;
$.ajax({
type: 'POST',
url: 'http://somewebpage.com',
data: dataSend,
success: function(data) {
alert(data);
},
erro: function(data) {
alert('Try again later');
}
});
});
Теперь, что происходит.
Функция для события 'edge.remove' работает плавно и без проблем.
Но когда пользователь нажимает , как , код просто не запускается в успешной части вызова ajax, я пробовал простое предупреждение, например alert ('test'); но ничего не происходит тоже. Код, однако, прекрасно работает на бэкэнде, и код, который я хочу добавить, успешно добавлен.
Однако, если я установил async: false, код работает, предупреждения появляются на странице, но браузер получает ту неприятную «блокировку», которую я действительно хочу избежать.
Так, у кого-нибудь есть идеи, что именно здесь происходит?
PS .: На этой странице есть еще 2 элемента facebook, комментарии и фид активности. Я не знаю, но у меня сложилось впечатление, что канал активности может иметь какое-то отношение к этому ...