1

edge.create コールバックで本当に奇妙な問題に直面しています。

私がやっていることは、edge.create または edge.remove イベントが発生するたびにサーバーへの ajax 呼び出しを実行することです (最初はページが好きで、2 番目は好きではありません)。

コードはこちら

        // 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 要素、コメントとアクティビティ フィードがあります。わかりませんが、アクティビティフィードがこれに関係している可能性があるという印象を受けました...

4

2 に答える 2

0

これはある種の範囲の問題だと思います。FB.Event.subscribe のスコープ外で ajax 呼び出しを含む関数を定義し、FB.Event.subscribe 内からその関数を呼び出すだけで問題が解決する場合があります。

于 2011-07-26T17:08:56.167 に答える