成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Ajax請求過程中顯示進度的簡單實現

開發 后端
在這里我同樣以ASP.NET MVC應用為例,提供一種簡單的實現方式。我們GIF圖片和作為遮罩的<div>定義在布局文件中,并為它們定制了相應的CSS。

Ajax在Web應用中使用得越來越頻繁。在進行Ajax調用過程中一般都具有這樣的做法:顯示一個GIF圖片動畫表明后臺正在工作,同時阻止用戶操作本頁面(比如Ajax請求通過某個按鈕觸發,用戶不能頻繁點擊該按鈕產生多個并發Ajax請求);調用完成后,圖片消失,當前頁面運行重新編輯。

以下圖為例,頁面中通過一個Load鏈接以Ajax請求的方式加載數據(左)。當用戶點擊該鏈接之后,Ajax請求開始,GIF圖片顯示“Loading“狀態,同時當前頁面被“罩住”防止用戶繼續點擊Load按鈕(中);Ajax請求完成被返回響應的結果,結果被呈現出來的同時,GIF圖片和“遮罩”同時消失(右)。[源代碼從這里下載]

在這里我同樣以ASP.NET MVC應用為例,提供一種簡單的實現方式。我們GIF圖片和作為遮罩的<div>定義在布局文件中,并為它們定制了相應的CSS。其中GIF和遮罩<div>的z-index分別設置為2000和1000(這個任意,只要能夠讓遮罩的<div>遮住當前頁面,GIF圖片顯示在最上層即可)。后者通過設置position、top、bottom、left和right是它可以遮住整個頁面,并且將其背景設置為黑色。

  1.  <!DOCTYPE html> 
  2.  <html> 
  3.      <head> 
  4.          <title>@ViewBag.Title</title>     
  5.          <style type="text/css"> 
  6.              .hide{display:none }  
  7.              .progress{z-index: 2000}  
  8.              .mask{position: fixed;top: 0;right: 0;bottom: 0;left: 0; z-index: 1000; background-color: #000000}  
  9.          </style>       
  10.          ...  
  11.     </head> 
  12.     <body>   
  13.         <div>@RenderBody()</div> 
  14.         <img id="progressImgage" class="progress hide" alt="" src="@Url.Content("~/Images/ajax-loader.gif")"/> 
  15.         <div id="maskOfProgressImage" class="mask hide"></div> 
  16.     </body> 
  17. </html> 

然后我們通過如下的代碼為jQuery定義了另一個實現Ajax調用的方法ajax2,該方法依然調用$.ajax(options)實現Ajax調用。在ajax2方法中我們將options參數complete屬性進行了“封裝”,讓可以將顯示出來的GIF圖片和遮罩<div>隱藏起來。同時覆蓋了options的async屬性,是之總是以異步方式執行,因為只有這樣瀏覽器才不能被鎖住,GIF也才能正常顯示。在調用$.ajax(options)進行Ajax請求之前,我們將GIF圖片和遮罩<div>顯示出來,并且將其定位在正中央。遮罩<div>的透明度進行了相應設置,所以會出現上圖(中)的效果。

  1. <!DOCTYPE html> 
  2. <html> 
  3.     <head> 
  4.         ...  
  5.         <script type="text/javascript" src="@Url.Content("~/Scripts/jquery-1.7.1.min.js")"></script> 
  6.         <script type="text/javascript"> 
  7.             $(function () {  
  8.                 $.ajax2 = function (options) {  
  9.                     var img = $("#progressImgage");  
  10.                    var mask = $("#maskOfProgressImage");  
  11.                    var complete = options.complete;  
  12.                    options.complete = function (httpRequest, status) {  
  13.                        img.hide();  
  14.                        mask.hide();  
  15.                        if (complete) {  
  16.                            complete(httpRequest, status);  
  17.                        }  
  18.                    };  
  19.                    options.async = true;  
  20.                    img.show().css({  
  21.                        "position": "fixed",  
  22.                        "top": "50%",  
  23.                        "left": "50%",  
  24.                        "margin-top": function () { return -1 * img.height() / 2; },  
  25.                        "margin-left": function () { return -1 * img.width() / 2; }  
  26.                    });  
  27.                    mask.show().css("opacity", "0.1");  
  28.                    $.ajax(options);  
  29.                };  
  30.            });  
  31.        </script> 
  32.    </head> 
  33.    ...  
  34. /html> 

那么現在進行Ajax調用的時候只需要調用$.ajax2就可以,如下所示的是實例中“Load”鏈接的click事件的注冊代碼:

  1.  <a href="#" id="load">Load</a> 
  2.  <div id="result"></div> 
  3.  <script type="text/javascript"> 
  4.      $("#load").click(function () {  
  5.          $.ajax2 ({  
  6.              url: '@Url.Action("GetContacts")',  
  7.              success: function(result)  
  8.              {  
  9.                  $("#result").html(result);  
  10.             }  
  11.         });  
  12.     });  
  13. </script> 

原文鏈接:http://www.cnblogs.com/artech/archive/2013/01/04/progress-4-ajax.html

責任編輯:張偉 來源: 博客園
相關推薦

2010-06-04 17:03:17

實現Hadoop

2009-12-16 10:08:07

2010-05-05 14:55:15

Oracle存儲過程

2010-04-29 17:31:56

Oracle存儲過程

2011-08-11 14:35:47

SQL Server插入更新

2011-05-03 10:31:59

噴墨打印機注墨誤區

2009-07-23 14:10:38

Hibernate J

2013-08-15 12:26:40

阿里云飛天

2010-07-01 14:05:43

SNMPMIB

2011-04-11 17:28:50

oracle存儲select語句

2025-06-25 09:06:18

2022-03-07 07:57:04

Linux工具內存

2010-04-15 16:54:31

Oracle存儲過程

2010-05-27 17:45:13

MySQL存儲過程

2010-05-31 16:57:09

2010-11-12 09:18:13

SQL Server存

2019-08-13 15:01:04

變更運維項目經理

2023-02-28 16:26:46

推薦系統模塊

2010-11-11 09:40:34

BUG

2012-01-17 16:41:08

JavaSwing
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99re视频在线观看 | 亚洲视频手机在线 | 欧美激情久久久 | 国产精品九九视频 | 中文字幕在线一区 | 日日干夜夜操天天操 | 天天草av | 国产黄色网 | 国产乱码精品一区二区三区av | 国产精品自产拍在线观看蜜 | 在线视频三区 | 久久久久久网 | av黄色在线观看 | 久久免费高清 | 久久影院一区 | 免费一看一级毛片 | 国产中文字幕网 | 成人不卡视频 | 精品欧美一区二区三区免费观看 | 91.com在线观看 | 91成人在线| 日韩在线观看视频一区 | 亚洲欧美一区二区三区视频 | 国内成人免费视频 | 久久亚洲经典 | 久久精品电影 | 中文字幕视频一区 | 亚洲91精品 | 超碰最新在线 | 国产在线播放一区二区三区 | 午夜免费在线电影 | 九九精品在线 | 日本久久久久久 | 欧美一级做性受免费大片免费 | 男人av在线播放 | 国产精品成人国产乱一区 | 亚洲一区二区欧美 | 久久精品视频在线播放 | 综合久久av | 午夜免费影视 | 日韩欧美一区二区三区免费观看 |