【问题标题】:Multiple request when FB edge.create Event catchedFB edge.create 事件捕获时的多个请求
【发布时间】:2011-05-20 13:53:12
【问题描述】:

我想使用 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')

【问题讨论】:

    标签: python django facebook xmlhttprequest xfbml


    【解决方案1】:

    我确实面临着同样的问题,一直在使用 AJAX 动态创建按钮,特定于内容,但“edge.create”一些如何存储事件和增加 edge.create 事件并在我单击时触发多次在另一个 FB 之类的小部件上。

    蜜蜂撞到我的头这么严重,到目前为止还没有运气:(

    任何快速帮助,应不胜感激。

    最后我破解了它,只是将我从响应对象获得的响应与我需要传递的响应进行了比较,并且有效。

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-08
        • 1970-01-01
        • 1970-01-01
        • 2014-08-29
        • 2018-07-27
        • 2012-02-06
        • 2017-06-28
        • 2021-05-31
        相关资源
        最近更新 更多