2012-05-09 49 views
0

下面是我使用jQuery Ajax方法創建的Ajax代碼。如何顯示使用jquery ajax時立即加載消息?

$(".loading_msg").show(); 
$.ajax({ 
    type: "POST", 
    url: "submit_ops.php?action=submit_form", 
    data: $("#frmMyForm").serialize(), 
    success: function(result){ 
     if(result=='Success'){ 
      $("#msgContainer").html('<div style="color:#3CA322;font-weight:bold;font-size:14px;padding:10px;">Thank you.</div>'); 
      $("#msgContainer").fadeIn(); 
     } 
     else{ 
      $("#msgContainer").html('<div style="color:red;font-size:12px;padding:10px;">' + result + '</div>'); 
      $("#msgContainer").fadeIn(); 
     } 
    }, 
    error: function(){ 
     //console.log('error'); 
    }, 
    complete: function(){ 
     //console.log('complete'); 
     $(".loading_msg").hide(); 
     $("#submit").attr("disabled", false); 
    } 

}); 

所以邏輯,每當Ajax請求即將製成,

  1. 的.login_msg容器被顯示第一

  2. 然後AJAX調用作出

  3. 和當它完成時,.loading_msg再次被隱藏。

現在的問題是,它不能正常工作,因爲它應該是。因此,當進行ajax調用時,瀏覽器會掛起幾秒鐘,但不會顯示加載消息。但是,當請求完成時,登錄消息將顯示爲半秒鐘,然後消失,因爲我已根據請求完成將其設置爲隱藏。

所以我希望.login_msg應該顯示在請求之前。

對此有何建議?提前致謝。

回答

2

嘗試使用beforeSend$.ajaxcomplete設置:

$.ajax({ 
    type: "POST", 
    url: "submit_ops.php?action=submit_form", 
    data: $("#frmMyForm").serialize(), 
    beforeSend:function(){ 
      $(".loading_msg").show(); 
     } 
    complete:function(){ 
      $(".loading_msg").hide(); 
     } 

    .... 
    .... 
}); 
+0

還是一樣:( – aslamdoctor

+0

嘗試示出裝載前序列化形式:'變種d = $( 「#frmMyForm」).serialize();'和然後在'$ .ajax'中設置數據形式就像'data:d',我認爲這會導致瀏覽器掛起並延遲顯示加載圖像。請記住,當加載動畫過於繁重時,可能會跳過或不是在調用'show()'後立即繪製 – TheVillageIdiot

+0

發現了這個問題,我在使用async:false;它導致了這個問題,現在它解決了,因爲我刪除了該設置,謝謝你的努力@TheVillag eIdiot – aslamdoctor

相關問題