@fuckingawesomenigga

Почему ajax дублирует POST запрос?

var fields = function() {
    var form_data = new FormData();
    var fields = $('form .field').get().map(n => n.name);
    $.each(fields, function(index, value) {
        form_data.append(value, $('.field[name=' + value + ']').val());
    });
    form_data.append('action', $('form').attr('id'));
    form_data.append('section', section);
    if (id) { form_data.append('id', id) }
    return form_data;
}

var POST = function() {
    $.ajax({
            url: 'functions.php',
            dataType: 'html',
            contentType: false,
            processData: false,
            data: fields(),
            type: 'POST'
        })
        .done(function(data) {
            console.log(data);
        })
        .fail(function() {
            console.log("Ajax error");
        });
}


при первой отправке всё ок, вторая и последующая на один запрос больше
  • Вопрос задан
  • 628 просмотров
Решения вопроса 1
@fuckingawesomenigga Автор вопроса
нашел ответ
Потому, что в jQuery метод .click() и другие методы событий, устанавливают обработчики с помощью метода addEventListener. А значит, в отличии от установки inline или через свойство, на один элемент может быть установлено N-ное количество обработчиков на одно и то же событие. Вот и получается, что при каждом вызове функции checkWinWidth и верном условии, события наслаиваются, как слоёный пирог.


В таком случае помогает:
$('#submit').off('click');
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы