Ajax在Web應(yīng)用中使用得越來越頻繁。在進行Ajax調(diào)用過程中一般都具有這樣的做法:顯示一個GIF圖片動畫表明后臺正在工作,同時阻止用戶操作本頁面(比如Ajax請求通過某個按鈕觸發(fā),用戶不能頻繁點擊該按鈕產(chǎn)生多個并發(fā)Ajax請求);調(diào)用完成后,圖片消失,當(dāng)前頁面運行重新編輯。以下圖為例,頁面中通過一個Load鏈接以Ajax請求的方式加載數(shù)據(jù)(左)。當(dāng)用戶點擊該鏈接之后,Ajax請求開始,GIF圖片顯示“Loading“狀態(tài),同時當(dāng)前頁面被“罩住”防止用戶繼續(xù)點擊Load按鈕(中);Ajax請求完成被返回響應(yīng)的結(jié)果,結(jié)果被呈現(xiàn)出來的同時,GIF圖片和“遮罩”同時消失(右)。[源代碼從這里下載]
創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計、成都網(wǎng)站設(shè)計、嘉祥網(wǎng)絡(luò)推廣、微信小程序開發(fā)、嘉祥網(wǎng)絡(luò)營銷、嘉祥企業(yè)策劃、嘉祥品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們大的嘉獎;創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供嘉祥建站搭建服務(wù),24小時服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com在這里我同樣以ASP.NET MVC應(yīng)用為例,提供一種簡單的實現(xiàn)方式。我們GIF圖片和作為遮罩的
1:
2:
3:
4: @ViewBag.Title
5:
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:
10: ...
11:
12:
13: @RenderBody()
14:
15:
16:
17:
然后我們通過如下的代碼為jQuery定義了另一個實現(xiàn)Ajax調(diào)用的方法ajax2,該方法依然調(diào)用$.ajax(options)實現(xiàn)Ajax調(diào)用。在ajax2方法中我們將options參數(shù)complete屬性進行了“封裝”,讓可以將顯示出來的GIF圖片和遮罩
1:
2:
3:
4: ...
5:
6:
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:
32:
33: ...
34:
那么現(xiàn)在進行Ajax調(diào)用的時候只需要調(diào)用$.ajax2就可以,如下所示的是實例中“Load”鏈接的click事件的注冊代碼:
1: Load
2:
3:
4: $("#load").click(function () {
5: $.ajax2 ({
6: url: '@Url.Action("GetContacts")',
7: success: function(result)
8: {
9: $("#result").html(result);
10: }
11: });
12: });
13: