如何停止在jQuery中发送的先前ajax调用

4

我正在使用 Rails 2,遇到了一个问题:如何停止在同一元素上的先前 ajax 调用。

例如,我有一个分类下拉框,它根据博客类型进行更新。如果我连续点击两次类型,那么就会发送两个请求。在我的第二个请求完成之前,如果我点击了第一个响应中基于类别加载子类别的类别,那么现在第二个响应已经完成并更新了类别。但是子类别是第一个响应类别中选择的响应之一。

如何停止先前发送的获取类别的 ajax 调用。

1个回答

4
var currentRequest = null;

function someFunction(target){
    currentRequest = jQuery.ajax({
       url: target,

       beforeSend : function()
        {           
            if(currentRequest != null)
            {
                currentRequest.abort()
            }
        },

        success: function() { alert("done"); }
    });
}

当然,这个函数并不是必需的,只需要使用一个包含xhr对象的变量,在发送请求之前中止请求即可。

为了确保,ajax函数会从变量中删除自己?这是如何工作的。您没有取消设置“currectRequest”。 - Martijn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接