<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Examples</title> <meta name="description" content=""> <meta name="keywords" content=""> <link href="" type="text/css" rel="stylesheet"> <script type="text/javascript"> /* *AJAX方法封裝:2013年11月22日 *參數說明: *type//請求方法 *async//true表示異步讀取文件 *url//url路徑 *data//發送數據 *timeout//設置超時時間 *contentType//寫入header頭,表示請求類型 *beforeSend//ajax請求之前調用方法,如果該函數返回false,將會阻止AJAX請求 *success//響應成功時調用方法(XHR.status===200) *complete//請求完成后回調函數 (請求成功或失敗之后均調用)。 **/ (function(){ var httpRequest=(function(){ try{ /*****FF,Google等*****/ return function(){ return new XMLHttpRequest(); }; }catch(e){ try{ /*****IE某些版本*****/ return function(){ return new ActiveXObject("Msxml2.XMLHTTP"); }; }catch(e){ try{ /*****其他IE版本*****/ return function(){ return new ActiveXObject("Microsoft.XMLHTTP"); }; }catch(e){ return null; } } } })(); /*暴露ajax方法*/ window.ajax=function (param){ //處理參數 param.type=param.type || "GET"; param.async=param.async || true; param.url=param.url || window.location.href; param.data=param.data || ""; param.timeout=param.timeout || 10000; param.complete=param.complete || function(){}; param.contentType=param.contentType || { "Content-type":"x-www-form-urlencoded" }; //初始化變量 var textStatus=""; var timer=null; //狀態函數 var stateChangeFn=function(){ /* *readyState五個狀態0:未發送請求,1:已發送請求,2:已經握手,3:正在處理請求,4:請求處理完成 *0:請求未初始化(還沒有調用 open())。 *1:請求已經建立,但是還沒有發送(還沒有調用 send())。 *2:請求已發送,正在處理中(通常現在可以從響應中獲取內容頭)。 *3:請求在處理中;通常響應中已有部分數據可用了,但是服務器還沒有完成響應的生成。 *4:響應已完成;您可以獲取並使用服務器的響應了。 */ if(XHR.readyState===4){ if(XHR.status===200){ //響應成功 param.success && param.success(XHR.responseText); textStatus="success"; }else { textStatus=XHR.status; } clearTimeout(timer); param.complete(textStatus); } }; if(httpRequest === null){ //alert("你的瀏覽器不支持AJAX"); param.complete("error"); return false; }else { XHR=new httpRequest(); } if(param.beforeSend && param.beforeSend()===false){ return false; } //post請求 if(param.type==="POST"){ XHR.open("POST",param.url,param.type); for(var key in param.contentType){ XHR.setRequestHeader(key,param.contentType[key]); } XHR.onreadystatechange=stateChangeFn; XHR.send(param.data); } //get請求 else if (param.type==="GET"){ XHR.open("GET",param.url+"?"+param.data,param.type); XHR.onreadystatechange=stateChangeFn; XHR.send(null); } //設置請求過期時間,十秒超時 timer = setTimeout(function(){//AJAX請求十秒超時 XHR.abort(); param.complete("timeout"); }, param.timeout); } })(); /************分割線************/ window.onload=function(){ ajax({ type:"GET", async:true,//true表示異步讀取文件 url:"ajax.txt", data:"a&b",//發送數據 timeout:8000,//8秒超時 contentType:{//請求頭信息,只對POST請求有效 "Content-type":"x-www-form-urlencoded" }, beforeSend:function(){//ajax請求之前調用,如果該函數返回false,將會阻止AJAX請求 document.getElementById("beforeSend").innerHTML="開始加載...." }, success:function(msg){//響應成功時調用 document.getElementById("success").innerHTML="返回結果:"+msg; }, complete:function(state){//請求完成后回調函數 (請求成功或失敗之后均調用)。 document.getElementById("complete").innerHTML="請求完成,狀態:"+state; } }); } </script> </head> <body> <div id="beforeSend"></div> <div id="success"></div> <div id="complete"></div> </body> </html>
同目錄下新建ajax.txt文件,用http訪問以上html文件。