У меня есть веб-страница, которую я создаю для отображения информации из базы данных, на странице отображаются 2 таблицы, одна таблица ожидания и одна таблица истории. Таблица истории автоматически устанавливается на дату текущего дня. Поэтому, когда кто-то хочет изменить диапазон дат, чтобы увидеть историю, он меняет дату с помощью календарного средства выбора даты, настроенного в JavaScript.
В этом же файле у меня есть вызов AJAX, который публикует новые фильтры даты. Первый раз, когда он нажимается, находясь на странице, он совершает один звонок, затем второй - 2 звонка, третий - 4 звонка и т. Д., Делая 2 ^ n звонков, где n - номер клика перед обновлением страницы.
Это также происходит с другим вызванным мной вызовом AJAX, который заключается в автоматическом обновлении таблицы ожидания каждые 6 секунд.
Это изображение - это то, как сетевые вызовы выглядят при работе. Код для этого звонка:
$(document).ready(function() {
//Enable date picker for id startDate
$("#startDate").datepicker();
//Enable date picker for id endDate
$("#endDate").datepicker();
//Set the datepickers to read only so only the calendar can be used to select a date
$("#startDate").attr({
readOnly: false,
style: "background-color:#FFFFFF"
});
$("#endDate").attr({
readOnly: false,
style: "background-color:#FFFFFF"
});
// update function to update pending table
var update = function() {
$.ajax({
url: "pending",
type: "GET",
dataType: "html",
success: function(data) {
//Replace existing table with data returned from query
$('#pendTable').html(data);
move();
},
error: function(xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
window.location.href = "";
}
});
};
// automatically updates the pending table every 6 minutes
setInterval(update, 360000);
//On filter change, submit the filters and update the table div
$('.filter').on('change', function() {
var filterValue = $(this).val(),
startDate = document.getElementById('startDate').value,
endDate = document.getElementById('endDate').value;
$.ajax({
url: "postFilters",
async: false,
type: "POST",
data: $('#filters').serialize(),
dataType: "html",
success: function(data) {
//Replace existing table with data returned from query
$('#histTable').html(data);
},
error: function(xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
window.location.href = "";
}
});
});
});
Кроме того, на моей консоли установлено, что вызов выполняется несколько раз, у меня есть лог внутри контроллеров, чтобы уведомить меня, когда они вызываются, и они такое же количество раз, как это отображается в сетевых журналах Chrome.
Что не так с этим? Я не могу понять это.