我有一个函数,在输入更改时运行ajax调用。
但是,有可能在之前的ajax调用完成之前再次触发该函数。
我的问题是,在开始新的ajax调用之前,我将如何中止它?不使用全局变量。(请参阅此处的类似问题的答案)
我当前代码的jsfiddle:
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 } });