Facebook FB.Event.subscribe “bug” with the edge.create callback

半城伤御伤魂 提交于 2019-12-24 09:37:26

问题


Im fancing a really weird problem with the edge.create callback.

What im doing is to execute an ajax call to the server each time an edge.create or edge.remove event occurs (the firs is to like and the second to unlike a page).

Heres the code

        // 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');
                    }
                });
            });

Now, whats happening.

The function for the 'edge.remove' event works smooth and without any problems.

But when the user click like the code simply dont run on the success part of the ajax call, i tryed a simple alert like alert('test'); but nothing happens too. The code, however, works fine on the backend and the code I want to add is added with success.

However if i set the async : false the code works, the alerts is presented on the page but the browser gets that nasty "lock down" that i really want to avoid.

So, anyone have any idea whats exactly going on here?

PS.: Theres 2 others facebook elements on this page, the comments and activity feed. I dont know but im with the impression that the activity feed may have something to do with this...


回答1:


I think this is some sort of scope issue. If you define the function containing the ajax call outside of the scope of the FB.Event.subscribe, and just call that function from within the FB.Event.subscribe, that may fix the issue.




回答2:


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


来源:https://stackoverflow.com/questions/5558479/facebook-fb-event-subscribe-bug-with-the-edge-create-callback

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!