如何停止ajax加载请求

时间:2017-04-21 05:42:45

标签: jquery ajax

test.php的

 <select id="proc_id" class="multiselect custom processselect"   name="proc_id" style="display: none;">
<option>Select</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>

test.js

  var set_time =0;
var interval;
$('#proc_id').change(function(){
    set_time=$('#proc_id :selected').val();
    //alert((set_time));
    if(parseInt(set_time) > 0) {
        clearInterval(interval);
        set_time= set_time * 1000;
        interval = setInterval(function() {
             getFileProcessList(start_date);
             getResultInfoList(start_date); 
        }, set_time);
    } 
    else {
        clearInterval(interval);
    }
});

根据选择时间,它将调用函数。在该函数中,我有ajax请求。当我选择&#39; 1&#39;如果我选择&#39; 0&#39;那么ajax会加载它停止调用该函数,但之前加载的ajax正在加载。所以我需要停止,如果之前的ajax调用正在加载,当我选择&#39; 0&#39;

3 个答案:

答案 0 :(得分:0)

首先计算选择的数量。使用这个

var count = $('#proc_id option:selected').length;

它会返回所选选项的数量..基于这个条件做ajax ..这是我从urs中理解的...不是吗?

您注意到&#39; 1&#39; ..这意味着选项数量或选项的价值?

答案 1 :(得分:0)

这是因为clearInterval只会停止对setInterval中传递的函数的后续调用。您需要存储从AJAX调用var xhr = $.ajax({})返回的jqXHR对象,然后在事件处理程序中调用xhr.abort()以在值为0时终止请求。

答案 2 :(得分:0)

如果你的一个/两个功能

GroupByKey

在其定义中包含ajax请求,然后您可以声明一个/两个全局变量,例如getFileProcessList(start_date); getResultInfoList(start_date); 现在,您可以按如下方式将ajax调用分配给此变量,

var ajaxRequest1;

现在在您使用 clearInterval()的地方中止此请求 ajaxRequest1 = $.ajax({ // your code }); 将此用于所有ajax请求。