从Facebook评论Web插件创建评论时,FB.Event.subscribe('comment.create')运行2次

时间:2019-02-11 13:45:29

标签: javascript jquery django facebook-graph-api

每当有人在Facebook评论插件上创建评论时,我都想调用ajax 1时间函数。但是服务器会调用ajax函数两次。

我已经看了一天,但没有任何帮助。

这是我的代码

window.fbAsyncInit = function fb() {
    FB.Event.subscribe('comment.create', function () {
        function csrfSafeMethod(method) {
            // these HTTP methods do not require CSRF protection
            return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
        }

        $.ajaxSetup({
            beforeSend: function (xhr, settings) {
                if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
                    xhr.setRequestHeader("X-CSRFToken", csrftoken);
                }
            }
        });

        $.ajax({
            url: 'http://127.0.0.1:8000/ajax/comment/',
            type: "POST",
            data: {
                'id': $('#fbcomment').attr('data')
            },
            dataType: 'json',
            success: () => {

            }
        });
    });

};

这是我的facebook js(我把它放在<body>之前):

<div id="fb-root"></div>
  <script>(function (d, s, id) {
      var js, fjs = d.getElementsByTagName(s)[0];
      if (d.getElementById(id)) return;
      js = d.createElement(s);
      js.id = id;
      js.src = 'https://connect.facebook.net/vi_VN/sdk.js#xfbml=1&version=v3.2';
      fjs.parentNode.insertBefore(js, fjs);
  }(document, 'script', 'facebook-jssdk'));
  </script>

我的urls.py链接:

re_path(r'^ajax/comment/$', views.Action.comment, name='comment'),

这是视图:

    def comment(request):
        id = int(request.POST.get('id'))
        film = get_object_or_404(Film, pk=id)
        film.comment = film.comment + 1
        film.save()
        return JsonResponse(id, safe=False)

请帮助我。 对不起,我英语不好。

This is what i get

0 个答案:

没有答案