JQuery AJAX调用多次调用URI,并随调用而扩展

时间:2018-07-03 16:18:52

标签: javascript jquery ajax

我有一个正在创建的网页,用于显示数据库中的信息,该页面显示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在网络日志中显示的次数相同。

这有什么问题?我不知道。

0 个答案:

没有答案