如果正在进行相同的请求,请跳过AJAX功能

时间:2013-07-15 20:23:48

标签: javascript jquery ajax setinterval

我在JavaScript函数中有我的AJAX请求。使用setInterval函数,AJAX函数每5000ms执行一次。

我想知道是否有办法检查以前的AJAX调用是否仍然处理,所以我没有多个AJAX请求相同。

这是我的代码:

function getData(fields){
    $.ajax({
        url: 'index.php',
        type: 'post',
        data: { fields: fields },
        dataType: 'json',
        success: function(json) {                                                                                       
        if (json) {
            // We have a response
        }   
    });
}

window.setInterval(function(){
    getPosts(fields);
}, 2000);

提前致谢!

彼得

2 个答案:

答案 0 :(得分:3)

var req;

创建一个我们可以在函数范围之外访问的变量。

function getData(fields) {
    req = $.ajax({...});

将变量分配给ajax请求

setInterval(function() {
    if (req.state() == 'resolved' && req.state() !== 'pending') {
        getPosts(fields);
    }
});

检测.state()

答案 1 :(得分:1)

试试这个:

var getDataRequest = null;
function getData(fields) {
    if (getDataRequest !== null) {
        return;
    }
    getDataRequest = $.ajax({
        url: 'index.php',
        type: 'post',
        data: { fields: fields },
        dataType: 'json',
        success: function(json) {
            if (json) {
                // We have a response
            }
            getDataRequest = null;
        }
    });
}

window.setInterval(function() {
    getPosts(fields);
}, 2000);