您好,登錄后才能下訂單哦!
這篇文章主要介紹原生js怎么實(shí)現(xiàn)對(duì)Ajax的封裝,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
前言
眾所周知,jquery在我們?nèi)粘i_(kāi)發(fā)中的使用頻率非常高,與js相比,我們省去了冗長(zhǎng)的獲取元素的代碼,不用考慮一些麻煩的兼容問(wèn)題,更加方便的動(dòng)畫(huà)實(shí)現(xiàn),以及更加方便的方法調(diào)用讓我們覺(jué)得jquery真是越用越舒服。但是jquery說(shuō)到底還是對(duì)js的封裝,我們不光要用的舒服還要深入理解其中的原理,這樣才能更好的使用它。
首先我們封裝的函數(shù)為了能實(shí)現(xiàn)可傳入無(wú)限多個(gè)參數(shù),在使用我們即將封裝的函數(shù)時(shí),需要使用對(duì)象進(jìn)行傳參,形式如下:
//data作為參數(shù)傳入我們下面封裝的函數(shù) var data = { //數(shù)據(jù) user:"yonghu1", pass:'12345', age:18, //回調(diào)函數(shù) success:function (data){ alert(data); } }
函數(shù)封裝:
1、封裝一個(gè)輔助函數(shù),把傳進(jìn)來(lái)的對(duì)象拼接成url的字符串
function toData(obj){ if (obj == null){ return obj; } var arr = []; for (var i in obj){ var str = i+"="+obj[i]; arr.push(str); } return arr.join("&"); }
2、封裝Ajax
function ajax(obj){ //指定提交方式的默認(rèn)值 obj.type = obj.type || "get"; //設(shè)置是否異步,默認(rèn)為true(異步) obj.async = obj.async || true; //設(shè)置數(shù)據(jù)的默認(rèn)值 obj.data = obj.data || null; if (window.XMLHttpRequest){ //非ie var ajax = new XMLHttpRequest(); }else{ //ie var ajax = new ActiveXObject("Microsoft.XMLHTTP"); } //區(qū)分get和post if (obj.type == "post"){ ajax.open(obj.type,obj.url,obj.async); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); var data = toData(obj.data); ajax.send(data); }else{ //get test.php?xx=xx&aa=xx var url = obj.url+"?"+toData(obj.data); ajax.open(obj.type,url,obj.async); ajax.send(); } ajax.onreadystatechange = function (){ if (ajax.readyState == 4){ if (ajax.status>=200&&ajax.status<300 || ajax.status==304){ if (obj.success){ obj.success(ajax.responseText); } }else{ if (obj.error){ obj.error(ajax.status); } } } } }
以上是“原生js怎么實(shí)現(xiàn)對(duì)Ajax的封裝”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。