欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于jQuery的ajax方法封裝

 更新時間:2016年07月14日 13:43:30   作者:天上云好白  
AJAX 是一種用于創(chuàng)建快速動態(tài)網(wǎng)頁的技術(shù)。這篇文章主要介紹了基于jQuery的ajax方法封裝的相關(guān)資料,需要的朋友可以參考下

ajax (ajax開發(fā))簡介

AJAX即“Asynchronous Javascript And XML”(異步JavaScript和XML),是指一種創(chuàng)建交互式網(wǎng)頁應(yīng)用的網(wǎng)頁開發(fā)技術(shù)。

AJAX = 異步 JavaScript和XML(標(biāo)準(zhǔn)通用標(biāo)記語言的子集)。

AJAX 是一種用于創(chuàng)建快速動態(tài)網(wǎng)頁的技術(shù)。

通過在后臺與服務(wù)器進(jìn)行少量數(shù)據(jù)交換,AJAX 可以使網(wǎng)頁實(shí)現(xiàn)異步更新。這意味著可以在不重新加載整個網(wǎng)頁的情況下,對網(wǎng)頁的某部分進(jìn)行更新。

在實(shí)際的項目里,ajax的應(yīng)用頻率很高,所以盡管jquery或者其他的一些類似的js庫做了非常不錯的封裝,仍然有進(jìn)一步封裝簡化的空間和必要

舉一個例子,很久很久以前,我的ajax是這么寫的:

$.ajax({
url: 'www.baidu.com/getInfo',
type: 'POST',
data: {
name: 'jack',
age: 18
},
dataType: 'json',
success: function(resp){
// callback
},
error: function(err){
// error code
} 
});

乍一看挺好沒啥問題,但是其實(shí)success回調(diào)里的邏輯可能很復(fù)雜,甚至可能會出現(xiàn)ajax回調(diào)里再放一個ajax的情況,那這種寫法就很糟糕了,全都雜糅在一起

可以進(jìn)行一個簡單的封裝,這在之前Deferred對象的隨筆里已經(jīng)有提到

function ajax(url, param, type) {
// 利用了jquery延遲對象回調(diào)的方式對ajax封裝,使用done(),fail(),always()等方法進(jìn)行鏈?zhǔn)交卣{(diào)操作
// 如果需要的參數(shù)更多,比如有跨域dataType需要設(shè)置為'jsonp'等等,可以考慮參數(shù)設(shè)置為對象
return $.ajax({
url: url,
data: param || {},
type: type || 'GET'
});
}
// 鏈?zhǔn)交卣{(diào)
ajax('www.baidu.com/getInfo').done(function(resp) {
// 成功回調(diào)
}).fail(function(err) {
// 失敗回調(diào)
});

但是雖然做到這一步了,問題還是會來,比如我司,成功的回調(diào)里還有一層邏輯判斷,像這樣:

// 我司ajax返回的json數(shù)據(jù)格式
// 當(dāng)result為false時,msg中往往有錯誤信息
{
result: true,
data: {
name: 'jack'
},
msg: null
}
ajax('www.baidu.com/getInfo').done(function(resp) {
// 成功回調(diào)
if(resp.result){
// 當(dāng)resp中result為true時的操作
// 往往這個時候要操作處理resp中的data對象信息
}
else{
// 當(dāng)result為false時的操作,這時往往會根據(jù)resp中的另一屬性msg來判斷具體處理
}
}).fail(function(err) {
// 失敗回調(diào)
});

問題有二:

第一,我每個ajax中都需要寫一個同樣的相對固定的邏輯判斷(每個公司或者項目組可能會有不同,但是就項目本身而言,或者放大了到公司來說必然是固定的),我覺得很煩。

第二,如果我只想專注處理數(shù)據(jù),比如在成功回調(diào)里,我直接拿到要處理要渲染的數(shù)據(jù),在失敗的回調(diào)里我直接拿到錯誤的代碼,有沒有這樣的可能做進(jìn)一步的封裝。

其實(shí)這倆問題是一個,總結(jié)一句話,就是不想寫那么多if,else。有一句話我覺得說得很好,邏輯是守恒的,但如果是可預(yù)見的邏輯,是有精簡的可能的,我們這種顯然屬于可預(yù)見的邏輯。

二次封裝利用了延遲對象的then方法,具體看代碼:

function handleAjax(url, param, type) {
return ajax(url, param, type).then(function(resp){
// 成功回調(diào)
if(resp.result){
return resp.data; // 直接返回要處理的數(shù)據(jù),作為默認(rèn)參數(shù)傳入之后done()方法的回調(diào)
}
else{
return $.Deferred().reject(resp.msg); // 返回一個失敗狀態(tài)的deferred對象,把錯誤代碼作為默認(rèn)參數(shù)傳入之后fail()方法的回調(diào)
}
}, function(err){
// 失敗回調(diào)
console.log(err.status); // 打印狀態(tài)碼
});
}
handleAjax('www.baidu.com/getInfo').done(function(resp){
// 當(dāng)result為true的回調(diào)
}).fail(function(err){
// 當(dāng)result為false的回調(diào)
});

這就把之前很雜揉的代碼進(jìn)一步的的簡化,也方便了維護(hù),比如某一天跟你說result不再是布爾值了,直接改成狀態(tài)碼這樣的東西了,如果按以前一個ajax寫一個判斷,簡直要瘋。

以上所述是小編給大家介紹的基于jQuery的ajax方法封裝,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • jQuery的ready方法詳解

    jQuery的ready方法詳解

    本文主要介紹了jQuery的ready方法的使用方法,用此方法實(shí)現(xiàn)了當(dāng)爺們加載完成后才執(zhí)行的效果,有相同需求的小伙伴可以參考下。
    2014-11-11
  • jquery遍歷函數(shù)siblings()用法實(shí)例

    jquery遍歷函數(shù)siblings()用法實(shí)例

    這篇文章主要介紹了jquery遍歷函數(shù)siblings()用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了jquery的siblings函數(shù)用于元素遍歷的相關(guān)技巧,需要的朋友可以參考下
    2015-12-12
  • jquery ajax 調(diào)用失敗的原因示例介紹

    jquery ajax 調(diào)用失敗的原因示例介紹

    jquery 在使用ajax過程中出現(xiàn)調(diào)用失敗的情況,想必大家都有遇到過吧,在本文有個不錯的示例,希望對大家有所幫助
    2013-09-09
  • JQuery中attr屬性和jQuery.data()學(xué)習(xí)筆記【必看】

    JQuery中attr屬性和jQuery.data()學(xué)習(xí)筆記【必看】

    下面小編就為大家?guī)硪黄狫Query中attr屬性和jQuery.data()學(xué)習(xí)筆記【必看】。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考,一起跟隨小編過來看看吧
    2016-05-05
  • jQuery的each循環(huán)用法簡單示例

    jQuery的each循環(huán)用法簡單示例

    這篇文章主要介紹了jQuery的each循環(huán)用法,以簡單實(shí)例形式分析了jQuery中each循環(huán)的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • JavaScript自動生成 年月范圍 選擇功能完整示例【基于jQuery插件】

    JavaScript自動生成 年月范圍 選擇功能完整示例【基于jQuery插件】

    這篇文章主要介紹了JavaScript自動生成 年月范圍 選擇功能,結(jié)合完整實(shí)例形式分析了基于jQuery插件的日期年月范圍自動生成與選擇功能相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-09-09
  • jquery實(shí)現(xiàn)拖拽添加元素功能

    jquery實(shí)現(xiàn)拖拽添加元素功能

    這篇文章主要為大家詳細(xì)介紹了jquery實(shí)現(xiàn)拖拽添加元素功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • jQuery tagsinput在h5郵件客戶端中應(yīng)用詳解

    jQuery tagsinput在h5郵件客戶端中應(yīng)用詳解

    為了保證在pc,ios,android端都可以使用,所以使用H5頁面的方式嵌入app的webview中。接下來通過本文給大家介紹jquery tagsinput在h5郵件客戶端中應(yīng)用詳解,感興趣的朋友一起看看吧
    2016-09-09
  • jQuery如何獲取動態(tài)添加的元素

    jQuery如何獲取動態(tài)添加的元素

    這篇文章主要介紹了jQuery如何獲取動態(tài)添加的元素的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • jQuery中ajax請求后臺返回json數(shù)據(jù)并渲染HTML的方法

    jQuery中ajax請求后臺返回json數(shù)據(jù)并渲染HTML的方法

    今天小編就為大家分享一篇jQuery中ajax請求后臺返回json數(shù)據(jù)并渲染HTML的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08

最新評論