Facebook FB.Event.subscribe "ошибка" с обратным вызовом edge.create - PullRequest
1 голос
/ 06 апреля 2011

Я решаю очень странную проблему с обратным вызовом 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, комментарии и фид активности. Я не знаю, но у меня сложилось впечатление, что канал активности может иметь какое-то отношение к этому ...

Ответы [ 2 ]

0 голосов
/ 08 мая 2013
HI i was facing the same problem but for different FB event. Here is my code an it 100% working :-

<!doctype html>
<html lang="en" xmlns:fb="https://www.facebook.com/2008/fbml">
<head>
  <meta charset="utf-8">
  <title>Facebook Like Button</title>
  <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>--->(DO not forget to include)
</head>
<body>
<div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {
    FB.init({appId: '464134126954048', status: true, cookie: true,xfbml: true});
    FB.Event.subscribe("message.send", function(targetUrl) {
     $.ajax({
        url:'abc.php',
        type:'POST',
        data:{name:'sunlove'},
        success:function(data)
        {
            alert("I am here");
        }
     });      
    });

  };
  (function() {
    var e = document.createElement('script'); e.async = true;
    e.src = document.location.protocol +
      '//connect.facebook.net/en_US/all.js';
    document.getElementById('fb-root').appendChild(e);
  }());
</script>
<fb:send href="http://demo.antiersolutions.com/studybooster1.2"></fb:send>
 <script type="text/javascript" src="http://platform.twitter.com/widgets.js"> </script> 

</body>
</html>
You can just copy and make new file and customize according to your need
0 голосов
/ 26 июля 2011

Я думаю, что это какая-то проблема объема. Если вы определяете функцию, содержащую вызов ajax, вне области действия FB.Event.subscribe, и просто вызываете эту функцию из FB.Event.subscribe, это может решить проблему.

...