1. 程式人生 > >Web前端面試指導(二十九):Ajax 是什麼? 如何建立一個Ajax?

Web前端面試指導(二十九):Ajax 是什麼? 如何建立一個Ajax?

題目點評

Ajax 是在工作中是必用的技術,在面試中十有八九會問的,答題的思路最好先回答原生態Ajax使用的步驟,最後告訴面試官,我們在工作中是使用Jquery來實現Ajax請求和處理的。在回答的時候儘量詳盡,包括方法的引數的個數,順序和作用,以免被面試官抓住不放。不給面試官提問的機會,那你的回答就牛逼了!

Ajax是什麼

我理解Ajax 是一種非同步請求資料的一種技術,對於改善使用者的體驗和程式的效能很有幫助。

Ajax的使用

以下步驟,如果不能理解你死記硬背都要記下來,總比你答不出來要好吧!

1.建立Ajax核心物件XMLHttpRequest

var xmlhttp;
if (window.XMLHttpRequest)
  {// 相容 IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// 相容 IE6, IE5
  xmlhttp=newActiveXObject("Microsoft.XMLHTTP");
  }

2.向伺服器傳送請求
xmlhttp.open(method,url,async);
send(string)

注意:open 的引數要牢記,很多面試官愛問這樣的細節
  • method:請求的型別;GET 或 POST
  • url:檔案在伺服器上的位置
  • async:true(非同步)或 false(同步)

send(string)方法post請求時才使用字串引數,否則不用帶引數。

注意:post請求一定要設定請求頭的格式內容

xmlhttp.open("POST","ajax_test.html",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("fname=Henry&lname=Ford");

3.伺服器響應處理

responseText    獲得字串形式的響應資料。

responseXML   獲得XML 形式的響應資料。

       3.1 同步處理

xmlhttp.open("GET","ajax_info.txt",false);
xmlhttp.send();
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

直接在send()後面處理返回來的資料。

3.2 非同步處理

非同步處理相對比較麻煩,要在請求狀態改變事件中處理。

xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 &&xmlhttp.status==200)
    {
   document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }

一共有5中請求狀態,從0 到 4 發生變化。

0: 請求未初始化

1: 伺服器連線已建立

2: 請求已接收

3: 請求處理中

4: 請求已完成,且響應已就緒

xmlhttp.status:響應狀態碼。這個也是面試比較愛問的,這個必須知道4個以上,比較常見的有:

200: "OK"

403   (禁止) 伺服器拒絕請求。

404   (未找到) 伺服器找不到請求的網頁。

408  (請求超時) 伺服器等候請求時發生超時。

500   (伺服器內部錯誤)  伺服器遇到錯誤,無法完成請求。