Здравствуйте.
Столкнулся с проблемой, функция выполняется по многу раз за один вызов, не понимаю в чем проблема, помогите пожалуйста решить данную проблему.
Функция при первом вызове работает нормально, а со второго вызова начинает по 2,4, 20 раз выполнятся и посылать по несколько ajax запросов с разным содержанием.
Вот функция:
function changeComment(data){
const _this = data;
const _thisId = _this.attr('id');
change_id.html('id: ' + _thisId)
create_form.removeClass('visible');
change_form.addClass('visible');
;
recalls__result.addClass('recalls__result--succ visible');
recalls__result.text('Измените отзыв!');
applyUpdateds.click((e) =>{
console.log('apply'); /*выводится по 2,4, иногда по 20 за раз*/
e.preventDefault();
const nameValue= change_name.val();
const surnameValue = change_surname.val();
const recallValue = change_recall.val();
$.ajax({
url: '../php/recalls/change_recall.php',
type: 'POST',
dataType: 'json',
data: {
id: _thisId,
newName: nameValue,
newSurName: surnameValue,
newRecall: recallValue,
},
success: function(result){;
console.log(result.updatedRecall[0].id); /*выводится по 2-3 значения за один раз*/
if(result.errors){
recalls__result.html(`<div class="comments__result--error comments__result">${result.errors}</div>`)
}else{
_this.closest('.recall__people').find('.recall__people-fio-name').html(`
<p class="recall__people-fio-name">${result.updatedRecall[0].name}</p>
`);
_this.closest('.recall__people').find('.recall__people-fio-surname').html(`
<p class="recall__people-fio-surname">${result.updatedRecall[0].surname}</p>
`);
_this.closest('.recall').find('.recall__text').html(`
<p class="recall__people-fio-surname">${result.updatedRecall[0].recall}</p>
`);
recalls__result.html(`<div class="comments__result--succ comments__result">Комментарий изменен!</div>`);
}
},
});
});
}
$(document).on('click', '.recall__people-buttons-change', function(){
changeComment($(this));
});
<?php
require '../config.php';
$id = $_POST['id'];
$newName = trim($_POST['newName']);
$newSurName = trim($_POST['newSurName']);
$newRecall = trim($_POST['newRecall']);
$query = $conn->prepare("SELECT * FROM `recalls` WHERE `recall` = :recall");
$query->execute(['recall' => $newRecall]);
if($query->rowCount() > 0){
$errors[] = 'Такой комментарий уже существует!';
}else if($newName == '' || $newRecall == ''){
$errors[] = 'Заполните все поля!';
}else if(preg_match('/\A\d+\z/', $newName) || preg_match('/\A\d+\z/', $newSurName) || preg_match('/\A\d+\z/', $newRecall)){
$errors[] = 'В полях запрещено вводить только цифры!';
}
if(empty($errors)){
$query = $conn->prepare('UPDATE `recalls` SET `name` = :newName, `surname` = :newSurName, `recall` = :newRecall WHERE `recalls`.`id` = :id');
$query->execute(['id' => $id, 'newName' => $newName, 'newSurName' => $newSurName, 'newRecall' => $newRecall]);
$query = $conn->prepare('SELECT * FROM `recalls` WHERE `id` = :id');
$query->execute(['id' => $id]);
$updatedRecall = [];
$updatedRecall = $query->fetchAll(PDO::FETCH_ASSOC);
echo json_encode(array('updatedRecall' => $updatedRecall));
}else{
echo json_encode(array('errors'=> array_shift($errors)));
}
?>