如何在特定时间段内调用Ajax请求?

时间:2016-03-11 05:18:41

标签: jquery

**我有一个棘手的问题,就是我想每小时拨打一次ajax电话。我不想在那个小时内发出第6个请求。但是一小时之后,我再次制作五个ajax再次调用一个小时。我正在使用jquery我写的一些代码如下。任何帮助? **

function getBubbles(){
    $.ajax({
        type : 'POST',
        url  : '/PostData',
        data : data,
        success : function(response){
            console.log(response);
        }
    });
}

3 个答案:

答案 0 :(得分:1)

使用setTimeOut();

$.ajax({
    url: "test.html",
    error: function(){
        // will fire when timeout is reached
    },
    success: function(){
        //do something
    },
    timeout: 12000// sets timeout to 12 seconds
});

答案 1 :(得分:0)

这个想法怎么样?

每隔1分钟使用间隔,然后超时1分钟以防止双重请求。

5 Times request every HOUR

var startRequest = setInterval(getBubbles, 60000); // change this part for time of request interval
var valid_minutes = [12, 24, 36, 48, 60]; // I divided 60minutes into 5 possible/valid time.

function getBubbles() {
  var getMinutes = new Date().getMinutes();
  var is_valid = $.inArray(getMinutes, valid_minutes); //following will return -1 (if not found) because a number is being searched in an array

  if (is_valid >= 0) {
    setTimeout(fucntion(
      // do your ajax functions here to execute
      $.ajax({
        type: 'POST',
        url: '/PostData',
        data: data,
        success: function(response) {
          console.log(response);
        }
      });
    ), 60000); //set timeout to 60 seconds to prevent multiple request (will used to past 1 minute interval)
  }
}

答案 2 :(得分:0)

使用名为queueRequest的函数将所有请求参数推送到队列并调用checkQueue。 checkQueue检查队列中是否有项目以及活动请求的数量是否小于5.如果满足这些条件,它会从队列中弹出一个请求并将其转换为真正的AJAX请求。然后它将一个done处理程序附加到请求,减少活动请求计数并调用checkQueue。

HashMap