У меня есть функция, в которой пользователь может опубликовать отчет, пользователь нажимает кнопку отчета, а затем быстро вводит информацию для отчета. Это работает, проблема в том, что страница не перезагрузилась, и пользователь решил сообщить второй пост, данные для этого отчета поступают в базу данных дважды. Почему это?AJAX дважды вводит данные в базу данных
Вот код:
$(document).ready(function() {
$(".report_post").click(function(e) {
var nid = $(this).attr("id");
$("#report_reason").dialog({
resizable: false,
height: 300,
width: 400,
modal: true,
});
$('.submit_report_post').click(function() {
var content = $("#report_content").val();
var type = "Post";
if ($('input[name="report"]:checked').length > 0 && (content != null &&
content != "")) {
var complaint = document.querySelector('input[name="report"]:checked').value;
alert('Reported!');
$.ajax({
type: 'POST',
url: 'php/report_post.php',
data: {
type: type,
nid: nid,
reason: complaint,
content: content,
},
cache: false,
success: function(data) {
$("#report_content").val("");
$("input[name='report']").prop('checked', false);
//$("#report_reason").dialog('close');
}
});
} else {
alert('Fill all of the information!');
}
});
e.preventDefault();
});
});
Несколько вещей, которые вы можете сделать. Создайте массив с идентификатором кнопки. Когда кнопка нажата, вставьте идентификатор в массив. И перед отправкой запроса ajax, проверьте, является ли значение уже внутри массива. Надеюсь, это ясно enougth –