我有一个正在创建的网页,用于显示数据库中的信息,该页面显示2个表,1个待处理表和1个历史记录表。历史记录表会自动设置为当天的日期。因此,当某人想要更改日期范围以查看历史记录时,他们可以使用JavaScript中设置的日历日期选择器来更改日期。
在同一文件中,我有一个AJAX调用,用于发布新的日期过滤器。第一次在页面上单击时,它会打一个电话,第二次它会打2个电话,第三次它会打4个电话,依此类推,进行2 ^ n个电话,其中n是刷新页面之前的点击数。
我发生的另一个AJAX调用也会发生这种情况,即每6秒自动更新待处理的表。
This image是运行时网络呼叫的外观。该调用的代码是:
$(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在网络日志中显示的次数相同。
这有什么问题?我不知道。