2013-04-22 49 views
-1

想要在處理ajax調用時顯示加載器。但隱藏和顯示在運行時不起作用。在調試模式下沒問題。我試圖把超時放在ajax上,但沒有結果。jQuery隱藏和顯示功能不支持AJAX調用

function Rate() { 
    $("#rate_navigation").hide(); 
    $("#rate_loader").show(); 

    $.ajax({ 
     type: "POST", 
     url: "url", 
     data: "data", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     async: false, 
     success: function (msg) { 
      $("#comment_result").html(msg.d); 
     }, 
     error: AjaxCallError 
    }); 

    $("#rate_loader").hide(); 
    $("#rate_navigation").show(); 
} 
+1

AJAX是異步的! – Barmar 2013-04-22 20:00:38

+1

你應該把最後2行放在成功函數 – Sharlike 2013-04-22 20:00:39

+2

那麼它不會隱藏?不顯示?都?你想要發生什麼,什麼時候發生? – j08691 2013-04-22 20:00:59

回答

4

beforeSend and complete

http://api.jquery.com/jQuery.ajax/

function Rate() { 

    $.ajax({ 
     type: "POST", 
     url: "url", 
     data: "data", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     async: false, 
     beforeSend: function() { 
      $("#rate_navigation").hide(); 
      $("#rate_loader").show(); 
     }, 
     complete: function() { 
      $("#rate_loader").hide(); 
      $("#rate_navigation").show(); 
     }, 
     success: function (msg) { 
      $("#comment_result").html(msg.d); 
     }, 
     error: AjaxCallError 
    }); 
} 
+0

很好的答案。謝謝。我已經提出異步:真正的使裝載機更有效。 – Ars 2013-04-23 06:06:45

1

把這些變成你的成功回調:

success: function (msg) { 
     $("#rate_loader").hide(); 
     $("#rate_navigation").show(); 
     $("#comment_result").html(msg.d); 
    }, 
    error: AjaxCallError 
}); 
1

把取消隱藏條件內成功

function Rate() { 
$("#rate_navigation").hide(); 
$("#rate_loader").show(); 

$.ajax({ 
    type: "POST", 
    url: "url", 
    data: "data", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    async: false, 
    success: function (msg) { 
     $("#comment_result").html(msg.d); 


     $("#rate_loader").hide(); 
     $("#rate_navigation").show(); 
    }, 
    error: AjaxCallError 
}); 


}