封裝ajax
阿新 • • 發佈:2017-06-20
activex read 用戶 網絡 for http 事件 clas nload
今天來說一下ajax,話不多說;直接上代碼!
//將數據轉換成 a=1&b=2格式; function json2url(json){ var arr = []; //加隨機數 防止緩存; json.t = Math.random(); for(var name in json){ arr.push(name+‘=‘+json[name]); } return arr.join(‘&‘); } function ajax(json){ //考慮前臺默認值: if(!json.url){ alert(‘請輸入合理的請求地址!‘); return; } json.type = json.type || ‘get‘; json.time = json.time || 5000; json.data = json.data || {}; //1.創建一個ajax對象; var timer = null; if(window.XMLHttpRequest){ var oAjax = new XMLHttpRequest(); }else{ var oAjax = new ActiveXObject(‘Microsoft.XMLHTTP‘); } //判斷用戶傳遞的是get還是post請求: switch (json.type.toLowerCase()){ case ‘get‘: //2.打開請求; oAjax.open(‘get‘,json.url+‘?‘+json2url(json.data),true); //3.發送數據: oAjax.send(); break; case ‘post‘: //打開請求; oAjax.open(‘post‘,json.url,true); //設置請求頭; oAjax.setRequestHeader(‘Content-type‘,‘application/x-www-form-urlencoded‘); //發送數據; oAjax.send(json2url(json.data)); break; } json.fnLoading && json.fnLoading(); //4.獲取響應數據 oAjax.onreadystatechange = function(){ if (oAjax.readyState == 4) { json.complete && json.complete(); if (oAjax.status >= 200 && oAjax.status < 300 || oAjax.status == 304) { //如果外邊傳遞了成功的回調函數,那麽就執行, json.success && json.success(oAjax.responseText); } else { //如果外邊傳遞了失敗的回調函數,那麽就執行, json.error && json.error(oAjax.status); } clearTimeout(timer);//規定時間內取到數據後清除定時器; } }; var timer; timer = setTimeout(function(){//設置網絡響應超時; alert(‘網絡響應超時,請稍後再試‘); oAjax.onreadystatechange = null;//網絡超時後清除事件; },json.time); };
就是這樣!你們看懂了嗎?百分百純純的原創!其實就是老師教的!就是這樣 =^?ω?^=
封裝ajax