2010-12-05 7 views
1

私のページの投票にFacebookのようなボタンを使いたかったのです。残念なことに、 'Like'をクリックすると、私は3つのリクエストを1つではなく関数に渡します。 ?これを防止するための方法は、サンプルコードがあります:FB edge.createイベントが複数回出されたとき

FB.Event.subscribe('edge.create', function(href, widget) { 
    console.log(href, widget); 
}); 

マイコード:

FB.Event.subscribe('edge.create', function(href, widget) { 
     $.ajax({ 
      type: "POST", 
      url: "/votes/register", 
      data: "href="+href, 
      dataType: 'json', 
      success: function(data){ 
       $(".list-submissions").html(data["html"]) 
      } 
     }); 
     return false;  
    }); 

それとも私はジャンゴを使用して、関数の側からこれをブロックすることができますか?ここに私の機能コードです:

def register_vote(request): 
    ip = request.META['REMOTE_ADDR'] 
    url = request.POST.get("href", "") 
    id = os.path.basename(url) 

    try: 
     vote = Vote.objects.filter(ip=ip, id=id) 
    except: 
     vote = None 

    if not vote: 
     vote = Vote(ip=ip, uid=id) 
     vote.save() 

    html = render_finalists(request) 
    ajax = simplejson.dumps({ 
     "html": html 
    }, cls=LazyEncoder) 
    return HttpResponse(ajax, mimetype='application/javascript') 

答えて

0

FacebookのコアJS SDKは、次のスクリプトタグ(またはその変形)、つまり、複数回参照されている場合は、あなたにコールバック関数を複数の要求を取得する可能性があります複数回、次のとおりです。

<script src="http://connect.facebook.net/en_US/all.js"></script> 
1

AJAXを使用して、コンテンツに固有のボタンを作成していますが、 'edge.create'はイベントを格納し、edge.createイベントを増やしたり、ウィジェットのような別のFBをクリックしてください。

は蜂がひどく頭を打っ持って、まだまで運:(

どれクイックヘルプ、感謝すべきではない。

最後に、私はちょうど私が応答から取得した応答を比較して、それを割れました私が渡す必要があったものに反対するオブジェクト。

FB.Event.subscribe('edge.create', function(response) { 
      if (response.toString() == shareUrl.toString()) {} } 
関連する問題