1

Facebookのいいねボタンを使って自分のページに投票したいと思っていました。残念ながら、「いいね」をクリックすると、関数に対して 1 つではなく 3 ~ 5 つのリクエストが返されます。これを防ぐ方法はありますか?サンプル コード:

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

または、 django を使用して関数側からこれをブロックできますか? これが私の関数コードです:

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')
4

2 に答える 2

1

私は少し同じ問題に直面しています。コンテンツに固有のAJAXを使用してその場でボタンのように作成していますが、「edge.create」はイベントを保存し、edge.createイベントをインクリメントし、別のFBをクリックすると複数回起動します。ウィジェットのように。

ミツバチが私の頭をひどく打っています、まだ運がありません:(

どんな迅速な助けでも、感謝されるべきです。

最後に、私はそれをクラックし、応答オブジェクトから取得した応答を、渡す必要のある応答と比較しただけで、それは機能します。

FB.Event.subscribe('edge.create', function(response) { 
            if ( response.toString() == shareUrl.toString() ) {} }
于 2011-01-17T09:00:45.310 に答える
0

Facebook コア JS SDK が複数回参照されている場合、つまり次のスクリプト タグ (またはバリエーション) が複数回参照されている場合、コールバック関数に対して複数のリクエストを受け取ることがあります。

<script src="http://connect.facebook.net/en_US/all.js"></script>
于 2010-12-08T02:50:58.383 に答える