最新寫的AJAX函數通過IE6、IE7,IE8,FF,Safari,Google,Opera

來源:互聯網
上載者:User
最新寫的AJAX類,應該很簡單應用樣本:   格式:req(URL,{asyn:同步或非同步,true|false,預設true即非同步dat:附帶的資料,預設為空白rdt:返回資料類型,預設返迴文本,可選XML或者JSONtimeout:[毫秒,逾時執行的函數],數組,預設[9000,""]cache:是否緩衝,其實就是在URL加隨機數form:是否提交表單,表單的id,如果ID可用那麼把Form也提交了。loading:[‘顯示Loading狀態ID','顯示內容'],資料或者ID,只有ID時顯示的文字為正在發送。。。done:完成時執行的函數,可以是ID或者是函數,為ID時把結果賦給這個ID,只能一個參數extra:附加的參數就是在原型就是done(a,b,c,d)done的第一個參數是強行加的,就是TXT或XML或JSON,後面的,後面的b,c,d是附加的參數用[b,c,d]數組形式單個時可以不用數組。})1.get方式提交,無返回 req("test.php");2.Post方式提交,無返回 req("test.php",{type:'post'})3.req('test.php',{asyn:false,type:'post',done:alert,loading:'status',form:'myform',timeout:[1000,'alert("請求時逾時")'],cache:false,dat:"a=xx&b=yy&c=zz,rdt:'JSON'"})以POST方式向test.php提交myform表單,並禁止AJAX緩衝,並附帶參數a,b,c,提交超過1秒提示逾時,在提交過程中在status這個控制項中顯示‘正在發送請求。。’,完成後alert出來結果,結果是JSON類型會顯示為Object問題:timeout的第二個參數,不能直接是函數,不然剛執行就給執行了。如果你們有什麼建議用QQ跟我聯絡function req(u,o){var P={   asyn:true,/*Asynchronism*/   type:"post",   dat:"",/*Data*/   rdt:"txt",/*ReponseDataType*/   timeout:[90000,""],   cache:true,   fail:function(e,u,t,d,s){     u="http://"+window.location.host+getRoot(u);     alert("錯誤類型:["+e+"]\nURI:["+u+"]["+t+"]\n\nData:{"+d+"}");     window.clipboardData.setData("Text",(("post"==t.toLowerCase())?u+(u.match(/\?/)?'&':'?')+d:u))    }};for(var key in o){P[key]=o[key]}P.type=P.type?P.type.toLowerCase():"get";var r=getXHR(),L=P.loading,l,S,I,C,X=false,Z;var _g=function(a){var a=a?a:"AutoGenElement_"+Math.ceil(Math.random()*1000);var s=(typeof(a)=="object")?a:document.getElementById(a);var g=(!s)?true:false;if(g){var j=document.createElement(b?b:"span");j.style.display="inline-block";document.body.appendChild(j)}return (!s)?j:s};var _s=function(a,b){if(!a)return;try{var o=_g(b);if("|input|textarea|option|".indexOf(o.nodeName.toLowerCase())>-1)o.value=a;else{o.style.display='';o.innerHTML=a}return o}catch(e){}}; var _b=function(s){return(typeof(s)=="string"?(s=document.getElementById(s))?s:false:false)};var _n=function(s){return(typeof(s)=='undefined'||s=="null"||s==""||s==null?"":escape(s).replace(/\+/g,'%2B').replace(/\"/g,'%22').replace(/\'/g,'%27').replace(/\//g,'%2F'))};var _t=function(s){return Object.prototype.toString.call(o)==='[object Array]'};if(!L)l=false;else if('string'==typeof(L)){l=true;C=null;I=L;S=false}else if(_t(L)){l=true;I=L[0],C=L[1];S=L[2]}else l=false;function _a(u,s){   if(!u.nodeName)return;   var v="|"+u.nodeName.toLowerCase()+"|";   if("|input|textarea|option|".indexOf(v)>-1)    u.value=s;   else u.innerHTML=s}function _q(s){   try{    var x=P.extra;    var d=P.rdt.toLowerCase();    var m=d&&d=="xml"?r.responseXML:r.responseText;    if(d=="json")eval("m="+m);    if(typeof(s)=="function"){     var y=[m];     if(isNull(x))return s(m);     else if(_t(x))y.push.apply(y,x);     else y.push(x);     s.apply(s,y)    }    else{     var t=_b(s);     if(t)      _a(t,m);     else if("string"==typeof(s))      eval(s);     else s(m)    }   }catch(e){}}var _f=function(z){   var u="",y="",t=z.elements,v,a;   for(var x=0;x<t.length;++x){    v=t[x];    if(v.name!==""){     a=undefined;     switch(v.type){      case"select-one":       if(v.selectedIndex>-1)        a=v.options[v.selectedIndex].value;       else a="";       break;      case"select-multiple":       var s=v.options;       for(var w=0;w<s.length;++w){        if(s[w].selected)         u+=y+v.name+"="+_n(s[w].value);        y="&"       }       break;      case"checkbox":      case"radio":       if(v.checked)a=v.value;       break;      default:       a=v.value;       break     }     if(a!=undefined){      a=_n(a);      u+=y+v.name+"="+a;y="&"     }    }   }return u};if(_b(P.form)){   var F=P.form;   F=F?_b(F):null;   if(!F||F.nodeName!="FORM")return;   K=F.getAttribute("method");   P.type=(!K)?"get":K.toLowerCase();   var c=_f(F);   if(c.length===0)return;   P.dat+=P.dat.length>0?'&'+c:c}var P_=(P.type=="post")?true:false;var U=u+=(P.cache)?"":((u.match(/\?/)?'&':'?')+"ascrnd="+new Date().getTime());if(!Post)U+=(U.match(/\?/)?'&':'?')+P.dat;var Z=setTimeout(function(){X=true;r.abort()},P.timeout[0]);var _r=function(){   if(X){    if(l)show("發送請求逾時",I)    eval(P.timeout[1])   }   else if(r.readyState==4){    clearTimeout(Z);    try{     if(r.status==200) {      if(l){       show("請求已經完成",I);       if(S&&!isNaN(S))setTimeout(function(){(I=_b(I))?I.style.display='none':''},S)      }      _q(P.done)     }     else{      var T="";      switch(r.status){       case 400:T="HTTP 錯誤 400 - 請求格式錯誤";break;       case 403:T="HTTP 錯誤 403 - 禁止訪問:訪問被拒絕";break;       case 404:T="HTTP 錯誤 404 - 檔案或目錄未找到";break;       case 500:T="HTTP 錯誤 500 - 伺服器內部錯誤";break;       default:T="請求發生錯誤!\n"+r.status+"/"+r.statusText      }      if(P.fail){       if(l)show(T,I);       P.fail(T,U,P.type,P.dat,r.status)      }     }    }catch(e){}   }};try{   r.open(P.type,U,P.asyn)   if(l)_s(C?C:"正在發送...",I);   if(P_)r.setRequestHeader("Content-Type","application/x-www-form-urlencoded");   r.send((P.type=="get")?null:P.dat);   if(P.asyn)r.onreadystatechange=_r;else _r()}catch(e){if(l)(_s(e.message,I))}};
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.