关闭活动的ajax请求(setTimeout)

时间:2017-11-06 17:08:21

标签: javascript ajax

我点击复选框时尝试停止活动的ajax请求。我激活了一个ajax,它每秒调用一个url,但当我取消选中该复选框时,我试图关闭ajax请求。我尝试使用listener.abort();并且它不起作用,我也添加了xhr.abort(),没有任何事情发生。 有什么建议吗?

    function listener() {
    $.get('http://localhost:3000/get-value', function (dataf) {
        if (dataf.result != "") {
            $.ajax({
                url: "http://localhost:8000/login",
                data: { pId: dataf.result },
                type: "POST",
                success: function (result) {
                    if (result.name != "") {
                        $.get('http://localhost:3000/close-conn');
                        window.location.href = result.url;
                    }
                }
            });
        }
        setTimeout(listener, 1000);
    });
}

function GetCheckStatus() {
    var flag = chkAuto.GetValue();

    if (flag) {
        $.ajax({
            url: "http://localhost:3000/open-conn",
            type: "GET",
        });
        listener();
    } else {
        $.ajax({
            url: "http://localhost:3000/close-conn",
            type: "GET",

        });
        // Doesnt work
        listener.abort();
    }
}

1 个答案:

答案 0 :(得分:1)

您正在调用函数的.abort()方法,而不是实际的请求对象。尝试这样的事情。

为$ .get请求和setTimeout定义变量,然后根据需要中止/清除它们。

equal_range