ajax加载延迟图像?

时间:2010-11-15 14:39:17

标签: jquery ajax loader

我目前已经实现了ajax来刷新我的内容,但我想添加一个延迟 - 任何人都知道如何将其添加到我拥有的代码中?

$.ajax({
   url: "<?php echo site_url('apply/processpersonaldetails'); ?>",
   type: 'POST',
   data: form_data,
   success: function(msg) {
       $('#content').empty().html('<img src="../images/ajaxloader.gif" />');
       $('#content').html(msg);
   }
});

对不起,我的意思是在新内容加载之前的延迟,我想在显示新内容之前显示加载图像...这有意义吗?

3 个答案:

答案 0 :(得分:1)

我不太明白你的场景延迟是什么意思,但你可以使用setTimeout函数来安排稍后执行某些回调:

window.setTimeout(function() {
    alert('this will be executed 3 seconds later');
}, 3000);

答案 1 :(得分:0)

搜索谷歌 setInterval和setTimeout它将与jquery

一起执行您想要的操作

答案 2 :(得分:0)

我不确定我是否完全理解您的问题,但假设ajaxloader.gif是加载图片,它将永远不会显示,因为它会立即被收到的内容替换。
ajax请求本身就是一个适当的延迟。我想从成功处理程序中移出<img行就足以在新内容到达之前看一下图像:

// Show the loading image before firing the ajax request
$('#content').html('<img src="../images/ajaxloader.gif" />');
$.ajax({
   url: "<?php echo site_url('apply/processpersonaldetails'); ?>",
   type: 'POST',
   data: form_data,
   success: function(msg) {
       // New content replaces the loading image
       $('#content').html(msg);
   }
});

如果在显示新内容之前仍需要额外的延迟,可以使用如下的setTimeout方法:

// Show the loading image before firing the ajax request
$('#content').html('<img src="../images/ajaxloader.gif" />');
$.ajax({
   url: "<?php echo site_url('apply/processpersonaldetails'); ?>",
   type: 'POST',
   data: form_data,
   success: function(msg) {
       // Insert one second delay before showing new content (not sure why)
       window.setTimeout(function() {
           // New content replaces the loading image
           $('#content').html(msg);
        }, 1000);
   }
});

考虑处理ajax错误,以确保在请求失败时图像也会隐藏。