原生js仿jquery實(shí)現(xiàn)對(duì)Ajax的封裝
前言
與js相比,jquery為我們省去了冗長的獲取元素的代碼,不用考慮一些麻煩的兼容問題,更加方便的動(dòng)畫實(shí)現(xiàn),以及更加方便的方法調(diào)用讓我們覺得jquery真是越用越舒服。但是jquery說到底還是對(duì)js的封裝,我們不光要用的舒服還要深入理解其中的原理,這樣才能更好的使用它。
首先我們封裝的函數(shù)為了能實(shí)現(xiàn)可傳入無限多個(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)來的對(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);
}
}
}
}
}
總結(jié)
以上就是原生js仿jquery實(shí)現(xiàn)對(duì)Ajax封裝的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
相關(guān)文章
全面解析JavaScript中的valueOf與toString方法(推薦)
本文給大家介紹JavaScript中的valueOf與toString方法,valueOf() 方法可返回 Boolean 對(duì)象的原始值,toString() 方法可把一個(gè)邏輯值轉(zhuǎn)換為字符串,并返回結(jié)果。對(duì)js中valueof和tostring相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2016-06-06
Javascript 正則表達(dá)式校驗(yàn)數(shù)字的簡單實(shí)例
下面小編就為大家?guī)硪黄狫avascript 正則表達(dá)式校驗(yàn)數(shù)字的簡單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-11-11
JavaScript中日期函數(shù)的相關(guān)操作知識(shí)
日期函數(shù)是我們經(jīng)常用到的知識(shí)點(diǎn),下面通過本文給大家介紹JavaScript中日期函數(shù)的相關(guān)操作知識(shí),非常不錯(cuò),感興趣的朋友一起學(xué)習(xí)吧2016-08-08
跟我學(xué)習(xí)javascript的var預(yù)解析與函數(shù)聲明提升
跟我學(xué)習(xí)javascript的var預(yù)解析與函數(shù)聲明提升,小編對(duì)var預(yù)解析與函數(shù)聲明提升知識(shí)點(diǎn)也不甚了解,和大家一起學(xué)習(xí)本篇文章。2015-11-11

