Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果发出相同的请求,则跳过AJAX函数_Javascript_Jquery_Ajax_Setinterval - Fatal编程技术网

Javascript 如果发出相同的请求,则跳过AJAX函数

Javascript 如果发出相同的请求,则跳过AJAX函数,javascript,jquery,ajax,setinterval,Javascript,Jquery,Ajax,Setinterval,我的AJAX请求包含在JavaScript函数中。使用setInterval函数,AJAX函数每5000ms执行一次 我想知道是否有办法检查前一个AJAX调用是否仍在处理中,这样我就不会有多个相同的AJAX请求 这是我的密码: function getData(fields){ $.ajax({ url: 'index.php', type: 'post', data: { fields: fields }, dataTyp

我的AJAX请求包含在JavaScript函数中。使用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);
提前谢谢

彼得

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

function getData(fields) {
    req = $.ajax({...});
将变量分配给ajax请求

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

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

function getData(fields) {
    req = $.ajax({...});
将变量分配给ajax请求

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

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);
试试这个:

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);

您可能需要检查
!==改为“挂起”
,以防失败!它起作用了。唯一的问题是req.state()未定义,因为函数未执行,因此req.state()将未定义。我刚刚添加了onload函数来解决这个问题!非常感谢:)@Ian我还没有遇到这个问题,但我添加了它是为了让您安心。您可能需要检查
!==改为“挂起”
,以防失败!它起作用了。唯一的问题是req.state()未定义,因为函数未执行,因此req.state()将未定义。我刚刚添加了onload函数来解决这个问题!非常感谢:)@Ian我还没有遇到过这个问题,但我添加它是为了安心。