2013-04-22 100 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 
}); 


}