2017-09-05 43 views
2

我想使用ajax提交表單並隱藏按鈕並顯示消息。 我使用"async:false"到ajax這就是爲什麼按鈕不隱藏。如果我使用"async:true"那麼它工作。如何停止在jQuery中執行1秒

$(document).ready(function (e) { 

$("#submit_form").on('submit',(function(e) { 

    $('#btn1').css('display','none'); 
    $("#show1").css('display','block'); 


e.preventDefault(e); 

var chkArray = []; 
var chkArray1 = []; 
$('#loading').show(); 
var inps = document.getElementsByName('chk_url[]'); 

//sleep(1000); 

for (var i = 0; i <inps.length; i++) { 
    var inp=inps[i]; 
    if($(inp).is(':checked')){ 
    var site_url=$('#site_urls').val(inp.value); 

    $.ajax({ 
    url: $('#site_urls').val(), 
    type: "POST",    
    data: new FormData(this), 
    contentType: false,  
    cache: false,    
    processData:false, 
    async:false,   
    success: function(data) 
    { 

    if(data=='done'){ 

      chkArray.push($('#site_urls').val()); 


    }else{ 

     chkArray1.push($('#site_urls').val()); 
    } 
    } 
    }); 
    } 

} 



})); 

}); 

是否有另一種方法來執行Ajax執行前的隱藏代碼?

我已經使用"delay(1000)""sleep(1000)"。 我不能使用"setTimeout"函數。

+0

的可能的複製[什麼是JavaScript的版本的睡眠()?](https://stackoverflow.com/questions/951021/what-is-the-javascript-version-of-sleep) –

+0

使用'async:true',你的'成功'回調將無論如何,當響應到達時執行。 「async:false」的任何強烈原因?不要讓用戶生氣,等待迴應。 – yvoytovych

回答

0

不要在for循環Ajax調用,使用外循環,

我不得不改變你的代碼,讓我知道這是有幫助的..

$(document).ready(function (e) { 

$("#submit_form").on('submit',(function(e) { 

    $('#btn1').css('display','none'); 
    $("#show1").css('display','block'); 


e.preventDefault(e); 

var chkArray = []; 
var chkArray1 = []; 
$('#loading').show(); 
var inps = document.getElementsByName('chk_url[]'); 

//sleep(1000); 
var fd = new FormData(); 

for (var i = 0; i <inps.length; i++) { 
    var inp=inps[i]; 
    if($(inp).is(':checked')){ 
    fd.append('site_urls', inp.value); 
    } 

} 


/*send call to server start here*/ 

    $.ajax({ 
    url: $('#site_urls').val(), 
    type: "POST",    
    data: fd, 
    contentType: false,  
    cache: false,    
    processData:false, 
    async:false,   
    success: function(data) 
    { 

    if(data=='done'){ 

      chkArray.push($('#site_urls').val()); 


    }else{ 

     chkArray1.push($('#site_urls').val()); 
    } 
    } 
    }); 

/*send call to server ens here*/ 

})); 

});