2013-07-15 45 views
-1

这可能是非常标准的,我真的很惊讶,有没有这个职位。重要提示:我使用jQuery UI,不从而寻找实现这一目标最简单的方法:简单的方法来做一个Ajax加载UI小部件?

function loadAjax(){ 
     $('body').append('<div id="status">loading...</div>'); 
     var out = ''; 
     $.ajax({ 
      type : "POST", 
      url : "load.php", // i'm mimicking slow network by using sleep(3) in the php 
      async : false // yes, false! No clue why but my stuff won't work otherwise 
     }) 
     .done(function(response) { 
      out = $.parseJSON(response); 
      $('#status').remove(); 
     }) 
} 

为什么loading... DIV不会出现,直到阿贾克斯结束后?我试图让它在之前显示负载,然后在返回对象发送时消失。

+1

我建议你修复异步部分。非常没有意义的做一个同步'$ .ajax'请求。这可能会“自动”修复你的其他问题 – Johan

+0

不,它不会。我有一堆其他的代码,并设置'async:true'是我设法使它一切正常的唯一方法。 – tim

+0

它不会? http://jsfiddle.net/FGSxr/ – Johan

回答

1

使用beforeSend回调

例如:

$.ajax({ 
     type : "POST", 
     url : "load.php", 
     beforeSend: function(){ $('body').append('<div id="status">loading...</div>'); } 
    }) 
+0

Aaah。 'beforeSend'。尼斯。这会做,谢谢。 – tim

0

标识做这样的......

只需设置#status到display:none;

然后做此...

$('#status').show(); 
$.post('load.php', function(response){ 
    $('#status').hide(); 
    out = $.parseJSON(response); 
}); 
相关问题