觀點明白
建立Ajax
建立XMLHttpRequest對象
var xhr; if (window.XMLHttpRequest){ //IE7+, Firefox, Chrome, Opera, Safari xhr=new XMLHttpRequest(); }else{ // 兼容 IE6, IE5 xhr=new ActiveXObject("Microsoft.XMLHTTP"); }
關於異步要求,沒必要守候服務器相應,JS代碼繼承實行。 能夠檢測XHR對象的readyState屬性,該屬性示意要求/相應歷程的當前運動階段。
0:未初始化。還沒有挪用open()要領。 1:啟動。已挪用open()要領,還沒有挪用send()要領。 2:發送。已挪用send()要領,還沒有吸收相應。 3:吸收。已吸收到部份相應。 4:完成。已吸收到悉數相應數據。
只需readyState屬性的值由一個值變成另一個值,就會觸發onreadyStatechange事宜,應用這個事宜來檢測每次狀況變化后readyState值,獵取服務器的相應也在這個事宜中處置懲罰。
xhr.OnreadyStatechange= function(){ If(xhr.readyState == 4){ if(xhr.status >=200 && xhr.status = 304){ alert(xhr.responseText); }else{ alert(“Request was unsuccessful: ”+ xhr.status); } } };
建立一個新的HTTP要求,並指定要求的要領、URL及異步(true)/同步(false)
xhr.open(method,url,async); 注重:open 的參數要切記,許多面試官愛問如許的細節 1)method:要求的範例;GET 或 POST 2)url:文件在服務器上的位置 3)async:true(異步)或 false(同步) 注重:post要求一定要設置要求頭的花樣內容 xhr.open("post","ajax_test.html",true); xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded"); //運用XHR模擬表單提交 xhr.send("fname=Henry&lname=Ford");
發送HTTP要求
xmlhttp.send(); 如果post要求,參數為作為要求主體發送的參數。 如果get要求,參數為null。
獵取同步發送要求返回的數據
if ((xhr.status >= 200 && xhr.status <300) || xhr.status == 304){ alert(xhr.responseText); }else{ alert(“Request was unsuccessful: ”+ xhr.status); }