1、須要一個套路:
服務器
每次都寫這麼一大堆的代碼,是否是要規範一下呢?app
三方面的工做,寫成三個函數,工做會有條理些:ide
一、建立XHR對象(比上一版進行了加強)函數
var xhr;//全局變 function createXhr(){ if (window.XMLHttpRequest) {// 針對 IE7+, Firefox, Chrome, Opera, Safari xhr=new XMLHttpRequest(); } else {// 針對 for IE6, IE5 xhr=new ActiveXObject("Microsoft.XMLHTTP"); } }
本函數能夠被反覆調用。url
二、設定工做參數及綁定函數:spa
button.onclick=function(){ createXhr();//很方便吧! xhr.open("GET","url?參數1=值1");//設定工做參數 xhr.onreadystatechange=callback;//設定回調函數,"callback"是函數名 xhr.send(null); }
button是舉個例子,表明界面中的一切可能事件!
code
3,回調函數的定義:orm
function callback(){ if(xhr.status==200){//表明着服務器正常響應(還記得404嗎) if(xhr.readyState==4){ alert(xhr.responseText);//對返回結果的一切可能處理,都在此處 } } }
以上三部分代碼組合到一塊兒,就是所有AJAX的代碼。對象
2、POST請求怎麼辦?事件
xhr.open("POST","url");//此時請求參數不附加在url後面 xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");//設定請求頭,必須作! xhr.send("fname=Bill&lname=Gates");//請求參數在這裏