Предотвратите выстрелы AJAX дважды каждый раз - PullRequest
1 голос
/ 19 апреля 2019

Я создаю веб-приложение с использованием JQuery 3.3.1.Казалось бы, каждый раз, когда я делаю вызов ajax, запрос отправляется дважды.Я могу сказать, потому что я пытался регистрировать запросы на стороне сервера.Я пробовал решения по аналогичным вопросам, но они, похоже, не помогли.

Я отделил вызов ajax от событий щелчка, так что это не происходит из-за того, что событие щелчка регистрируется дважды.

$(function() {
    console.log("hi");

    var request = {};
    request["user_id"] = 1;
    request["date"] = new Date();
    request["assignments"] = [{
        "point_count" : 1,
        "skill_mnemo" : "SKILL_FARM"
    }];

    $.ajax({
            type: "POST",
            dataType: "json",
            mimeType: "application/json",
            url: "./api/update_skill_point.php",
            enctype: 'multipart/form-data',
            data: request,
            async: false,
            cache: false,
            success: function(result) {
                console.log(result);
            }
    });
});

Ответы [ 2 ]

0 голосов
/ 19 апреля 2019

не используйте

(function(){})

, если мы используем (function () {}), он будет вызывать себя, когда DOM готовится, а затем снова, когда потребуется.

Попробуйте

function ajaxCall()
{
 console.log("hi");

    var request = {};
    request["user_id"] = 1;
    request["date"] = new Date();
    request["assignments"] = [{
        "point_count" : 1,
        "skill_mnemo" : "SKILL_FARM"
    }];

    $.ajax({
            type: "POST",
            dataType: "json",
            mimeType: "application/json",
            url: "./api/update_skill_point.php",
            enctype: 'multipart/form-data',
            data: request,
            async: false,
            cache: false,
            success: function(result) {
                console.log(result);
            }
    });
}

$(document).ready(){
 ajaxCall();
}

Таким образом, вы можете контролировать свой AJAX-вызов. Теперь у вас может быть представление о том, как поступить, если не сообщите мне, я постараюсь объяснить больше.

0 голосов
/ 19 апреля 2019

Вы должны отладить этот код следующими способами:

  1. Проверьте, сколько раз hii печатает в консоль.
  2. Добавьте точку останова в начале $.ajax,Затем проверьте стек вызовов.
  3. Откройте вкладку сети и проанализируйте стек вызовов в столбце инициатора для соответствующего вызова ajax. (Для Chrome)

Надеюсь, это поможет вам.

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