我有一个函数,可以在输入更改时运行AJAX调用.

但是,在上一个ajax调用完成之前,有可能再次启动该函数.

My question is, how would I abort the previous AJAX call before starting a new one? Without using a global variable. (See answer to a similar question here)

我现在的代码是:

Javascript:

var filterCandidates = function(form){
    //Previous request needs to be aborted.
    var request = $.ajax({
        type: 'POST',
        url: '/echo/json/',
        data: {
            json: JSON.stringify({
                count: 1
            })
        },
        success: function(data){
            if(typeof data !== 'undefined'){
                jQuery('.count').text(data.count)
                console.log(data.count);
            }
        }
    });
};

if(jQuery('#search').length > 0){
    var form = jQuery('#search');
    jQuery(form).find(':input').change(function() {
        filterCandidates(form);
    });
    filterCandidates(form);
}

HTML:

<form id="search" name="search">
    <input name="test" type="text" />
    <input name="testtwo" type="text" />
</form>
<span class="count"></span>

推荐答案

 var currentRequest = null;    

currentRequest = jQuery.ajax({
    type: 'POST',
    data: 'value=' + text,
    url: 'AJAX_URL',
    beforeSend : function()    {           
        if(currentRequest != null) {
            currentRequest.abort();
        }
    },
    success: function(data) {
        // Success
    },
    error:function(e){
      // Error
    }
});

Jquery相关问答推荐

在 Laravel 中使用 jQuery post 按相关值过滤 Select 选项,如何显示从控制器返回的数据?

我正在try 使用 Jquery 打开与帖子相关的特定 comments

无限滚动jQuery插件

在 jQuery 事件中控制this的值

如何使用 jQuery 的 getJSON() 方法传递请求标头?

如何使用jquery取消绑定所有事件

如何在单击时 Select 多选 Select 框的所有选项?

具有动态大小图像的马赛克网格 gallery

在不刷新页面的情况下更新网站的 CSS

如何使用 jQuery 进行带命名空间的 XML 解析

JQuery .hasClass 用于 if 语句中的多个值

Javascript 使用哈希值重新加载页面

jQuery 如果 div 包含此文本,则替换该部分文本

使用 jQuery DataTables 时禁用第一列的自动排序

Isotope 和 Masonry jQuery 插件之间的区别

使用 jQuery 比较两个 Javascript 对象数组

jQuery.active 函数

表单 propType 失败:您在没有 `onChange` 处理程序的情况下向表单字段提供了 `value` props

JQuery 判断 DOM 中的重复 id

jQuery 将换行符转换为 br (nl2br 等效)