如何在页面加载时显示 ajax 加载 gif 动画?

Posted

技术标签:

【中文标题】如何在页面加载时显示 ajax 加载 gif 动画?【英文标题】:How to show ajax loading gif animation while the page is loading? 【发布时间】:2010-11-21 06:33:54 【问题描述】:

我尝试在我的网站中实现 AJAX。当点击 div changepass 的内容时,它应该加载 changepass.template.php。这是我使用的代码。

 $(function() 
   $(".changepass").click(function() 
    $(".block1").load("views/changepass.template.php");
    return false;
 );

我的问题是如何在页面 changepass.template.php 完全加载时显示 GIF 动画 (loading.gif)。请给我一些代码提示。

【问题讨论】:

【参考方案1】:

有很多方法可以做到这一点。 一个简单的方法:

<div style="display:none" id="dvloader"><img src="loading.gif" /></div>

JS:

$(function() 
    $(".changepass").click(function() 
        $("#dvloader").show();
        $(".block1").load("views/changepass.template.php", function() $("#dvloader").hide(); );
        return false;
    );
);

根据 James Wiseman 的建议将 display:block 编辑为 show() :)

【讨论】:

以这种方式使用 css 设置显示样式会忽略默认的浏览器样式表设置。您可能不想显示“阻止” 是的,你是对的..我会修改它并使其成为 show()/hide()【参考方案2】:

而不是设置样式

.css("display", "block");

只需使用 .hide() 和 .show() 方法即可。

这些说明了 html 元素的浏览器默认样式表定义。您可能不想为图像显示“块”。一个元素可以有多种不同的显示样式:

http://www.w3schools.com/htmldom/prop_style_display.asp

【讨论】:

【参考方案3】:

您可以在调用 load 后调用一些方法来显示加载 gif 并使用 load 函数中的回调将其隐藏:

$(function() 
   $(".changepass").click(function() 
    $("#gifImage").show(); 
    $(".block1").load("views/changepass.template.php",null,function()
            $("#gifImage").hide();
    );
   return false;
);

【讨论】:

【参考方案4】:

例如,为了使它更健壮一点,您忘记添加

<div style="display:none" id="dvloader"><img src="loading.gif" /></div>

到 html,您也可以在 jQuery 中执行此操作,例如:

var container = $.create('div', 'id':'dvloader');
var image = $.create('img', 'src':'loading.gif');
container.append($(image));
$("body").append($(container));

这会自动添加 div。

只需在 onclick 按钮事件上触发。

使其不易出错。

【讨论】:

以上是关于如何在页面加载时显示 ajax 加载 gif 动画?的主要内容,如果未能解决你的问题,请参考以下文章

在每次页面访问或页面重新加载时显示一个新的 GIF

单击提交重力表单时显示加载动画

在后台运行 php shell_exec 时显示加载栏或 gif

IE 8 在使用 jQuery BBQ 重新加载页面时显示原始 ajax 响应

如何在加载延迟加载的路由组件时显示“加载”动画?

Kendo UI 图表 - 如何在加载数据时显示动画?