js中ajax封裝

使用傳字符串的形式

html頁面代碼:

<script type="text/javascript">
            //定義請求成功和請求失敗的回調(diào)函數(shù)
            function successFn(obj){
                console.log(obj);
            }
            function errorFn(err){
                console.log(err);
            }
            
            //調(diào)用ajax函數(shù)請求數(shù)據(jù)
            ajaxFn('GET','data.json','',successFn,errorFn);
        </script>

js代碼:

//以函數(shù)的形式封裝ajax請求
//參數(shù):method、data军浆、successFn剥悟、errorFn旺聚、url
function ajaxFn(method,url,data,successFn,errorFn){
    //創(chuàng)建對象
    var xhr=window.XMLHttpRequest?new XMLHttpRequest():ActiveXObject('Microsoft.XMLHTTP');
    //配置請求對象
    //把請求方法轉(zhuǎn)為大寫后再判斷
    method=method.toUpperCase();
    if(method=='GET'){
        xhr.open('GET',url+'?'+data,true);
        xhr.send(null);
    }else if(method=='POST'){
        xhr.open('POST',url,true);
        xhr.send(data);
    }else{
        console.error('參數(shù)有誤,請檢查后再調(diào)用!!!');
    }
    //監(jiān)聽服務(wù)器狀態(tài)
    xhr.onreadystatechange=function(){
        if(xhr.readyState==4&&xhr.status==200){
            //successFn(xhr.responseText);
            //根據(jù)responseXML屬性是否為空,判斷返回值類型是json還是xml
            var result=xhr.responseXML?xhr.responseXML:xhr.responseText;
            successFn(result);
        }else if(xhr.status==404){
            errorFn('頁面找不到');
        }else if(xhr.status==500){
            errorFn('服務(wù)器錯誤');
        }
    }
}

使用對象的形式:

html代碼:

<script type="text/javascript">         
            ajax({
                method:"get",
                url:"./data.json",
                data:"",
                successFn:function(obj){
                    console.log(obj);
                },
                errorFn:function(err){
                    console.log(err);
                }
            })
        </script>

js代碼:

//通過給函數(shù)傳遞參數(shù)的形式(參數(shù)是對象類型)檐迟,實現(xiàn)ajax封裝
/**
 * 傳遞對象作為參數(shù),實現(xiàn)ajax請求
 * @param {object} obj [函數(shù)參數(shù)码耐,對象類型追迟,obj.method:請求方法,obj.url:
 * 請求接口,obj.data:接口參數(shù)骚腥,obj.successFn:成功回調(diào),obj.errorFn:失敗回調(diào)]
 * @return {type} [description]
 */
function ajax(obj){
    var xhr=window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject('Microsoft.XMLHTTP');
    
    method=obj.method.toUpperCase();
    if(method=='GET'){
        xhr.open('GET',obj.url+'?'+obj.data,true);
        xhr.send(null);     
    }else if(method=='POST'){
        xhr.open('POST',obj.url,true);
        xhr.send(obj.data);
    }
    
    xhr.onreadystatechange=function(){
        if(xhr.readyState==4&&xhr.status==200){
            var result=xhr.responseText?xhr.responseText:xhr.responseXML;
            obj.successFn(result);
        }
    }
    
}

![Uploading image_814776.png . . .]

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末敦间,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌每瞒,老刑警劉巖金闽,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異剿骨,居然都是意外死亡代芜,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門浓利,熙熙樓的掌柜王于貴愁眉苦臉地迎上來挤庇,“玉大人,你說我怎么就攤上這事贷掖〉诊酰” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵苹威,是天一觀的道長昆咽。 經(jīng)常有香客問我,道長牙甫,這世上最難降的妖魔是什么掷酗? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮窟哺,結(jié)果婚禮上泻轰,老公的妹妹穿的比我還像新娘。我一直安慰自己且轨,他們只是感情好浮声,可當我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著旋奢,像睡著了一般泳挥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上至朗,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天屉符,我揣著相機與錄音,去河邊找鬼爽丹。 笑死筑煮,一個胖子當著我的面吹牛辛蚊,可吹牛的內(nèi)容都是我干的粤蝎。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼袋马,長吁一口氣:“原來是場噩夢啊……” “哼初澎!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤碑宴,失蹤者是張志新(化名)和其女友劉穎软啼,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體延柠,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡祸挪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了贞间。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贿条。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖增热,靈堂內(nèi)的尸體忽然破棺而出整以,到底是詐尸還是另有隱情,我是刑警寧澤峻仇,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布公黑,位于F島的核電站,受9級特大地震影響摄咆,放射性物質(zhì)發(fā)生泄漏凡蚜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一豆同、第九天 我趴在偏房一處隱蔽的房頂上張望番刊。 院中可真熱鬧,春花似錦影锈、人聲如沸芹务。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽枣抱。三九已至,卻和暖如春辆床,著一層夾襖步出監(jiān)牢的瞬間佳晶,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工讼载, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留轿秧,地道東北人。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓咨堤,卻偏偏與公主長得像菇篡,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子一喘,可洞房花燭夜當晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法驱还,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法议蟆,異常的語法闷沥,線程的語...
    子非魚_t_閱讀 31,602評論 18 399
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,858評論 25 707
  • 呀呀呀呀呀dream閱讀 175評論 0 0
  • 以后又要冷了,附一首媽媽每年冬天都會念的九九消寒歌 一九二九不出手咐容,三九四九冰上走舆逃,五九六九沿河看柳,七九河開戳粒,八...
    Enalylyly閱讀 315評論 0 0
  • 這兩天颖侄,一則男子開豪車到校園求愛的新聞刷爆了朋友圈。男子不僅顏值高享郊,還開著瑪莎拉蒂览祖,跳舞技術(shù)一流,更是由寶馬X6炊琉、...
    閑庭落閱讀 394評論 0 1