视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Ajax请求时显示进度
2020-11-27 19:52:02 责编:小采
文档
这次给大家带来Ajax请求时显示进度,Ajax请求时显示进度的注意事项有哪些,下面就是实战案例,一起来看一下。

Ajax在Web应用中使用得越来越频繁。在进行Ajax调用过程中一般都具有这样的做法:显示一个GIF图片动画表明后台正在工作,同时阻止用户操作本页面(比如Ajax请求通过某个按钮触发,用户不能频繁点击该按钮产生多个并发Ajax请求);调用完成后,图片消失,当前页面运行重新编辑。以下图为例,页面中通过一个Load链接以Ajax请求的方式加载数据(左)。当用户点击该链接之后,Ajax请求开始,GIF图片显示“Loading“状态,同时当前页面被“罩住”防止用户继续点击Load按钮(中);Ajax请求完成被返回响应的结果,结果被呈现出来的同时,GIF图片和“遮罩”同时消失(右)。

源码下载

在这里我同样以ASP.NET MVC应用为例,提供一种简单的实现方式。我们GIF图片和作为遮罩的<p>定义在布局文件中,并为它们定制了相应的CSS。其中GIF和遮罩<p>的z-index分别设置为2000和1000(这个任意,只要能够让遮罩的<p>遮住当前页面,GIF图片显示在最上层即可)。后者通过设置position、top、bottom、left和right是它可以遮住整个页面,并且将其背景设置为黑色。

 <!DOCTYPE html>
 <html>
 <head>
 <title>@ViewBag.Title</title> 
 <style type="text/css">
 .hide{displaynone }
 .progress{z-index }
 .mask{position fixed;top ;right ;bottom ;left ; z-index ; background-color #}
 </style> 
 ...
 </head>
 <body> 
 <p>@RenderBody()</p>
 <img id="progressImgage" class="progress hide" alt="" src="@Url.Content("~/Images/ajax-loader.gif")"/>
 <p id="maskOfProgressImage" class="mask hide"></p>
 </body>
 </html>

然后我们通过如下的代码为jQuery定义了另一个实现Ajax调用的方法ajax2,该方法依然调用$.ajax(options)实现Ajax调用。在ajax2方法中我们将options参数complete属性进行了“封装”,让可以将显示出来的GIF图片和遮罩<p>隐藏起来。同时覆盖了options的async属性,是之总是以异步方式执行,因为只有这样浏览器才不能被锁住,GIF也才能正常显示。在调用$.ajax(options)进行Ajax请求之前,我们将GIF图片和遮罩<p>显示出来,并且将其定位在正。遮罩<p>的透明度进行了相应设置,所以会出现上图(中)的效果。

 <!DOCTYPE html>
 <html>
 <head>
 ...
 <script type="text/javascript" src="@Url.Content("~/Scripts/jquery-...min.js")"></script>
 <script type="text/javascript">
 $(function () {
 $.ajax = function (options) {
 var img = $("#progressImgage");
 var mask = $("#maskOfProgressImage");
 var complete = options.complete;
 options.complete = function (httpRequest, status) {
 img.hide();
 mask.hide();
 if (complete) {
 complete(httpRequest, status);
 }
 };
 options.async = true;
 img.show().css({
 "position" "fixed",
 "top" "%",
 "left" "%",
 "margin-top" function () { return - * img.height() / ; },
 "margin-left" function () { return - * img.width() / ; }
 });
 mask.show().css("opacity", ".");
 $.ajax(options);
 };
 });
 </script>
 </head>
 ...
 </html>

那么现在进行Ajax调用的时候只需要调用$.ajax2就可以,如下所示的是实例中“Load”链接的click事件的注册代码:

 <a href="#" id="load">Load</a>
 <p id="result"></p>
 <script type="text/javascript">
 $("#load").click(function () {
 $.ajax ({
 url '@Url.Action("GetContacts")',
 success function(result)
 {
 $("#result").html(result);
 }
 });
 });
 </script>

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

怎么操作Ajax返回HTML标签样式

ajax异步下载文件

下载本文
显示全文
专题