捕获FB edge.create事件时的多个请求

时间:2010-12-05 16:34:38

标签: python django facebook xmlhttprequest xfbml

我想在我的页面上使用facebook的按钮进行投票。不幸的是,当点击“赞”时,我得到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')

2 个答案:

答案 0 :(得分:1)

我确实遇到了一些相同的问题,一直在使用AJAX创建类似按钮,特定于内容但是'edge.create'一些如何存储事件并增加edge.create事件并在我点击时多次触发在另一个类似FB的小部件上。

我的头很厉害,直到现在还没有运气:(

任何快速帮助都应该受到赞赏。

最后我破解了它,只是将我从响应对象获得的响应与我需要通过的响应进行比较。

FB.Event.subscribe('edge.create', function(response) { 
            if ( response.toString() == shareUrl.toString() ) {} }

答案 1 :(得分:0)

如果多次引用Facebook核心JS SDK,您可能会收到多个请求回调函数,即以下脚本标记(或变体)不止一次:

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