1. 程式人生 > >JS學習之ajax相關知識和ajax的封裝

JS學習之ajax相關知識和ajax的封裝

/*
         URL       地址  
         method    請求的方式get/post
         dataType  返回的資料型別string/xml/json
         data      請求時候傳的資料(一個物件)
         succ      成功後的回撥函式
         fail      失敗後的回撥函式
         data的資料格式 
         {
           'user' : 'xubj',
           'password':123
         }
         user=xubj&password=123
       
*/ function ajax(obj){ var settings={ url:'', method:'get', data:{}, dataType:'json', succ:function(){}, fail:function(){} };
//使用者傳的引數覆蓋預設引數 for (var attr in obj){ settings[attr] = obj[attr] } //把資料拼接成正確的格式 user=xubj&passowrd=123 var arr=[]; for(var attr in settings.data){ arr.push(attr+'='+settings.data[attr]); } settings.data=arr.join('&');
//宣告一個ajax物件 var ajax=window.XMLHttpRequest? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); //設定請求方式 if(settings.method.toLocaleCase()==='get'){ ajax.open('get',settings.url+'?'+settings.data+'&'+new Date().getTime(),true); ajax.send(); }else{ ajax.open('post',settings.url,true); ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); ajax.send(settings.data); } //設定完成事件的相容性 if(typeof ajax.onload==='undefined'){ ajax.onreadystatechange=ready; }else{ ajax.onload=ready; } function ready(){ if(ajax.readyState==4){ if(ajax.status==200){ switch(settings.dataType.toLocaleCase()){ case 'string': settings.succ(ajax.responseText); break; case 'json': settings.succ(JSON.parse(ajax.responseText)); break; case 'xml': settings.succ(ajax.responseXML); } }else{ settings.fail(ajax.status ); } } } }
/*
使用:
ajax({
url:'test.php',
method:'get',
dataType:'json',
data:{
uesr:'xubj',
password:123
},
succ:fucntion(){
成功處理
},
fail:function(){
失敗處理
}
});
*/