最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

jQuery Ajax請求狀態(tài)管理器打包

 更新時間:2012年05月03日 22:02:18   作者:  
現(xiàn)在的網(wǎng)站,在一個網(wǎng)頁中有異步請求甚至許多個異步請求已經(jīng)不足為奇。Ajax已經(jīng)成為了現(xiàn)在網(wǎng)站必須的基本功能,使網(wǎng)頁應(yīng)用更接近于桌面應(yīng)用
然而,無論有多么接近,通過客戶端與服務(wù)端的一來一回,必定會有等待加載數(shù)據(jù)的時間。所以,大多數(shù)網(wǎng)站都通過一個Gif動態(tài)圖標(biāo)或‘Loading...'等字樣來告知用戶數(shù)據(jù)還在加載中。但有時候這個問題會非常繁瑣和麻煩,要么將這個‘Loading'顯示在ajax請求之前,然后在ajax成功后隱藏它,或者將它寫在jquery的ajax的全局事件jQuery.ajaxStart()和jQuery.ajaxStop()中來控制整個頁面的ajax狀態(tài)。前者方法使用起來太瑣碎,每個請求都要寫一遍這個‘Loading',而且無論請求成功或失敗都需要隱藏它。后者是全局的,也就是整個頁面的請求狀態(tài),有時候無法滿足在局部顯示加載狀態(tài)的要求。

為了解決這些問題,我開發(fā)了jQuery的插件,名為:Ajax請求狀態(tài)管理器。使用這個插件可以讓loading不再那么麻煩了。你可以在觸發(fā)ajax請求前,用該插件事先添加寫好所有請求,你要做的只是在用戶交互的事件中執(zhí)行下.request()方法。你可以將一個頁面上所有請求設(shè)置為獨(dú)立顯示loading,也可以設(shè)置為全局顯示(只顯示一個loading)。下面是插件的具體使用方法:

自定義loading的css樣式:
.state-loading { background: #fff url(images/icon-ajax-loader.gif) ... }

引用jquery最新版本文件:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>

注意:該插件只在jquery1.4.4及之后的版本中測試通過。

引用Ajax請求狀態(tài)管理器插件文件:
<script src="js/jquery-ajaxloader.js"></script>

在jquery的ready事件中執(zhí)行.install()方法:
$.loader.install( className, isGlobal );

參數(shù)說明:
className:string,表示你自定義的loading的class名稱,比如上面css定義的state-loading。

isGlobal:boolean,定義是否是全局顯示還是獨(dú)立顯示loading,默認(rèn)值是true,該參數(shù)可以省略。

添加所需的ajax請求參數(shù)和成功后的回調(diào)方法:
$.loader( key ).add( modules, settings , callback );

參數(shù)說明:
key:string,通過這個key來創(chuàng)建或獲取指定模塊的加載器。當(dāng)然,同一個key可以執(zhí)行多次add()方法來添加不同的module,但是settings和callback是對于這個key是共享的,所以之后添加的settings和callback會覆蓋之前的。

modules:jquery object,一個頁面中同一個請求可以處理多個模塊的數(shù)據(jù),所以,如果之前install()方法是設(shè)置為false的,在執(zhí)行ajax請求時,添加到這個loader的所有module都會顯示loading狀態(tài)。

settings:map,jquery的ajax settings參數(shù),但不要設(shè)置ajax事件,這樣會覆蓋插件中的回調(diào)方法,默認(rèn)請求類型為GET。

callback:function,成功后的回調(diào)函數(shù),它有一個參數(shù)data,默認(rèn)是json類型返回的對象。

add()方法返回一個由'module'前綴的字符串?dāng)?shù)組,比如你添加了3個元素,那結(jié)果為['module1', 'module2', 'module3']。你可以通過返回的數(shù)組來刪除指定的其中一個模塊的loading,也可以不指定,也就是全部刪除,當(dāng)然如果你需要這樣做的話。

remove()方法刪除指定的模塊:
$.loader( key ).remove( moduleId );

參數(shù)說明:
moduleId:string或者array,指定為string的話會刪除其中一個module,指定為數(shù)組會批量刪除模塊,如果未指定參數(shù),會將模塊全部刪除。

示例
添加2個模塊到名為userinfo的加載器中:
復(fù)制代碼 代碼如下:

var id1 = $.loader( 'userinfo' ).add(
$( '#userinfo, #top-userinfo' ),
{ url: 'server/userinfo.php' },
function( data ) {
updateContent( $( '#userinfo, #topsection, #footer-userinfo' ), data );
}
);

再添加一個模塊到userinfo的加載器中:

var id2 = $.loader( 'userinfo' ).add( $('#footer-userinfo') );
var idList = id1.concat( id2 );
// result: [ 'module1', 'module2', 'module3' ]
刪除第2個模塊的loading,也就是‘#top-userinfo':
var ret = $.loader( 'userinfo' ).remove( idList[1] );
// result: true, modules: [ 'module1', 'module3' ]
在交互事件中執(zhí)行.request()方法:
$.loader( key ).request();
]
當(dāng)然,你也可以拋棄之前add的ajax settings和callback,在交互事件中自己寫$.ajax或$.get等。然后在請求前調(diào)用$.loader( key ).show(),在回調(diào)函數(shù)內(nèi)調(diào)用$.loader( key ).hide()。這樣也可以靈活控制loading的狀態(tài)。

示例
復(fù)制代碼 代碼如下:

$( '#getUserInfo' ).bind( 'click', function() {
$.loader( 'userinfo' ).request();
});

你也可以從新重新寫請求:
復(fù)制代碼 代碼如下:

$( '#getUserInfo' ).bind( 'click', function() {
$.loader( 'userinfo' ).show();
$.get( 'server/userinfo.php', function( data ) {
$.loader( 'userinfo' ).hide();
updateContent( $( '#userinfo, #topsection, #footer-userinfo' ), data );
})
});

注意:一個請求反復(fù)觸發(fā)時,管理器會執(zhí)行abor()來阻止之前未完成的請求,重新發(fā)布新的請求,然而如果你在頁面中通過jquery的ajaxError事件輸出錯誤信息,會把該信息一并認(rèn)為是錯誤的,所以如果有必要的話,需要你自行過濾。

示例
復(fù)制代碼 代碼如下:

// 輸出錯誤日志
$( 'body' ).bind( 'ajaxError', function( event, xhr, setting, thrownError ) {
// 過濾掉 abort 的錯誤信息
if ( xhr.status === 0 || xhr.readyState === 0 || xhr.statusText === 'abort' ) {
return;
}
$( '#log' ).append( '<p>' + thrownError + '</p>' );
});

該插件簡單易用,代碼邏輯也不是很復(fù)雜,但本人能力和技術(shù)水平有限,如遇到使用問題或任何bug請通過郵件方式告訴我:nicolas-zhao@hotmail.com。謝謝捧場!

打包下載:Ajax請求狀態(tài)管理器

相關(guān)文章

  • jQuery.buildFragment使用方法及思路分析

    jQuery.buildFragment使用方法及思路分析

    jQuery.buildFragment使用方法與思路分析以及源碼注釋分析等等,感興趣的朋友可以了解下哦
    2013-01-01
  • 利用jQuery對無序列表排序的簡單方法

    利用jQuery對無序列表排序的簡單方法

    下面小編就為大家?guī)硪黄胘Query對無序列表排序的簡單方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • 分享一個asp.net pager分頁控件

    分享一個asp.net pager分頁控件

    分享一個asp.net pager分頁控件,想要自定義控件的朋友可以參考下。
    2012-01-01
  • jQuery插件 selectToSelect使用方法

    jQuery插件 selectToSelect使用方法

    最近做一個報表頁面顯示位置配置的界面,剛開始時用的是多個checkbox,選擇其中需要的報表即可。后來隨著業(yè)務(wù)變復(fù)雜,需要使用兩個select,選擇其中需要的到右邊select,然后提交到數(shù)據(jù)庫
    2013-10-10
  • jQuery Attributes(屬性)的使用(二、類篇)

    jQuery Attributes(屬性)的使用(二、類篇)

    本系列文章主要講述jQuery框架的屬性(Attributes)使用方法,我將以實例方式進(jìn)行講述,以簡單,全面為基礎(chǔ),不會涉及很深,我的學(xué)習(xí)方法:先入門,后進(jìn)階!
    2009-12-12
  • 關(guān)于Jquery中的事件綁定總結(jié)

    關(guān)于Jquery中的事件綁定總結(jié)

    下面小編就為大家?guī)硪黄P(guān)于Jquery中的事件綁定總結(jié)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • jQuery源碼分析之jQuery中的循環(huán)技巧詳解

    jQuery源碼分析之jQuery中的循環(huán)技巧詳解

    這篇文章主要介紹了jQuery源碼中的循環(huán)技巧,包括各類選擇、判斷、遍歷等等操作,非常實用的技巧,需要的朋友可以參考下
    2014-09-09
  • jquery實時獲取時間的簡單實例

    jquery實時獲取時間的簡單實例

    下面小編就為大家?guī)硪黄猨query實時獲取時間的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • AngularJS中的JSONP實例解析

    AngularJS中的JSONP實例解析

    本文對AngularJS中的JSONP實例解析。需要的朋友可以參考下
    2016-12-12
  • jquery實現(xiàn)表單輸入時提示文字滑動向上效果

    jquery實現(xiàn)表單輸入時提示文字滑動向上效果

    這篇文章主要介紹了jquery實現(xiàn)表單輸入時提示文字滑動向上效果,涉及jquery鼠標(biāo)事件響應(yīng)及頁面元素樣式的動態(tài)操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08

最新評論

万宁市| 武川县| 芮城县| 和平县| 来宾市| 读书| 台北县| 丹凤县| 响水县| 昂仁县| 轮台县| 潮州市| 措美县| 泌阳县| 奉新县| 苍山县| 平凉市| 饶河县| 龙门县| 汕尾市| 常山县| 米林县| 门源| 正定县| 辽阳市| 武清区| 成都市| 新密市| 锦州市| 安乡县| 宜都市| 河北区| 远安县| 禄丰县| 泰州市| 澎湖县| 余江县| 巴塘县| 天水市| 开江县| 应用必备|