2016-06-08 51 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>