2016-06-08 68 views
0

我有一个SELECT元素具有js函数refreshme(),它将调用change事件。需要创建ajax调用中止和时间间隔

<select id="cat" name="cat" multiple onchange="refreshme()"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
</select> 

<div id="result"></div> 


<script> 
function refreshme() 
{ 
    /* i need output in $('#result').html(data) */ 
} 
</script> 

在这里,我想打电话给一个URL“demo.php”使用Ajax时我们改变选择/取消选择列表框中的项目。问题在于,当用户选择项目时,它立即调用一个jax函数。我想设置一些intermal,以便如果用户选择一个一个列表框然后ajax不会调用。我想设置大约2秒的差距。这意味着应该在最后一次选择的项目2秒后调用ajax调用。如果用户选择任何其他列表框,则如果Ajax调用正在运行并等待结果,则该调用将被中止。

+0

var ajaxcall = $ .ajax(); ajaxcall.abort();其唯一的破坏客户端请求不在服务器端 – JYoThI

+0

或您需要用户确认之前,ajax调用意味着。使用提示功能,并确认并调用阿贾克斯 – JYoThI

回答

1

以下方法只破坏不上服务器端的客户端请求。可能是它会帮助你

<script> 

function refreshme() 
{ 
    if(ajaxcall) 
    { 

     ajaxcall.abort(); //abort the previous request 
    } 

    var ajaxcall = $.ajax() ; //ajax request start here assign to variable 

    //here you can also use array and destroy it using for loop  
} 

</script> 
0

我回答自己与阿贾克斯和定时器为下。也许这可能有助于其他人。

<select id="cat" name="cat" multiple onchange="refreshme()"> 
     <option value="1">1</option> 
     <option value="2">2</option> 
     <option value="3">3</option> 
</select> 

<div id="result"></div> 


<script> 

var timer; 
var x; 

function refreshme() 
{ 
    $('#result').html(''); 

    if (x) { x.abort() } // XHR abort 
    clearTimeout(timer); // Clear the timer 
    timer = setTimeout(function() { 
     x = $.post('demo.php',function(data){ 
      $('#result').html(data); 
      }); // run ajax request and store in x variable 
    }, 2000); // 2000ms delay 

} 
</script>