FB.Event.subscribe ('comment.create') запускается 2 раза при создании комментария из веб-плагина комментариев на Facebook. - PullRequest
0 голосов
/ 11 февраля 2019

Я хочу вызывать функцию ajax 1 раз всякий раз, когда кто-то создает комментарий в плагине комментариев на Facebook.Но сервер дважды вызывает функцию 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)

Пожалуйста, помогите мне.извините за мой плохой английский.

Это то, что я получаю

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...