更多最新技術分享:請關注公眾號:胖梅web前端

Ajax常見面試題---總結

1什麼是ajax?ajax作用是什麼?

AJAX = 非同步 JavaScript 和 XML。

AJAX 是一種用於建立快速動態網頁的技術

。 透過在後臺與伺服器進行少量資料交換,AJAX 可以使網頁實現非同步更新。

2、為什麼要用ajax:

Ajax應用程式的優勢在於:

1。 透過非同步模式,提升了使用者體驗

2。 優化了瀏覽器和伺服器之間的傳輸,減少不必要的資料往返,減少了頻寬佔用

3。 Ajax引擎在客戶端執行,承擔了一部分本來由伺服器承擔的工作,從而減少了大使用者量下的伺服器負載。

3。AJAX最大的特點是什麼。

Ajax可以實現動態不重新整理(區域性重新整理)

就是能在不更新整個頁面的前提下維護資料。這使得Web應用程式更為迅捷地迴應使用者動作,並避免了在網路上傳送那些沒有改變過的資訊。

4、請介紹一下XMLHttprequest物件。

Ajax的核心是JavaScript物件XmlHttpRequest。該物件在Internet Explorer 5中首次引入,它是一種支援非同步請求的技術。簡而言之,XmlHttpRequest使您可以使用JavaScript向伺服器提出請求並處理響應,而不阻塞使用者。透過XMLHttpRequest物件,Web開發人員可以在頁面載入以後進行頁面的區域性更新。

5、AJAX技術體系的組成部分有哪些。

HTML,css,dom,xml,xmlHttpRequest,javascript

6:原生js ajax請求有幾個步驟?分別是什麼

//建立 XMLHttpRequest 物件

var ajax = new XMLHttpRequest();

//規定請求的型別、URL 以及是否非同步處理請求。

ajax。open(‘GET’,url,true);

//傳送資訊至伺服器時內容編碼型別

ajax。setRequestHeader(“Content-type”, “application/x-www-form-urlencoded”);

//傳送請求

ajax。send(null);

//接受伺服器響應資料

ajax。onreadystatechange = function () {

if (obj。readyState == 4 && (obj。status == 200 || obj。status == 304)) {

}

};

7:json字串轉換集json物件、json物件轉換json字串

//字串轉物件

JSON。parse(json)

eval(‘(’ + jsonstr + ‘)’)

// 物件轉字串

JSON。stringify(json)

Eval() json。parse()區別????

第一種方式:eval();

var data=‘{“student”:[{“name”:“張三”,“age”:“11”},{“name”:“李四”,“age”:“11”},{“name”:“王五”,“age”:“11”}]}’;

eval(’(“+data+”)’);

第二種方式:JSON。parse();

var data=’{“student”:[{“name”:“張三”,“age”:“11”},{“name”:“李四”,“age”:“11”},{“name”:“王五”,“age”:“11”}]}’;

JSON。parse(data);

區別:eval方法不會去檢查給的字串時候符合json的格式~同時如果給的字串中存在js程式碼eval也會一併執行~比如:

var data=‘{“student”:[{“name”:“張三”,“age”:“11”},{“name”:“李四”,“age”:“alert(11)”},{“name”:“王五”,“age”:“11”}]}’;

此時執行eval方法後會先彈出一個提示框輸出11的字串;

這時候使用JSON。parse()就會報錯,顯示錯誤資訊為當前字串不符合json格式;即JSON。parse()方法會檢查需要轉換的字串是否符合json格式。

相比而言eval方法是很不安全,特別是當涉及到第三方時我們需要確保傳給eval的引數是我們可以控制的,不然裡面插入比如window。location~指向一個惡意的連線

總的來說,還是推薦使用JSON。parse來實現json格式字串的解析。

8。什麼是JSON?

JSON是一種輕量級的資料交換格式。

9:ajax幾種請求方式?他們的優缺點?

常用的post,get,delete put

###程式碼上的區別

1:get透過url傳遞引數

2:post設定請求頭 規定請求資料型別

###使用上的區別

1:post比get安全

(因為post引數在請求體中。get引數在url上面)

2:get傳輸速度比post快 根據傳參決定的。

(post透過請求體傳參,後臺透過資料流接收。速度稍微慢一些。而get透過url傳參可以直接獲取)

3:post傳輸檔案大理論沒有限制 get傳輸檔案小大概7-8k ie4k左右

4:get獲取資料 post上傳資料

(上傳的資料比較多 而且上傳資料都是重要資料。所以不論在安全性還是資料量級 post是最好的選擇)

10.什麼情況造成跨域?

同源策略限制 不同源會造成跨域。以下任意一種情況不同,都是不同源。

同源:協議 域名 埠號全部相同 只要有一個不相同就是非同源策略

11。跨域解決方案有哪些?

原理:動態建立一個script標籤

。利用script標籤的src屬性不受同源策略限制。因為所有的src屬性和href屬性都不受同源策略限制。可以請求第三方伺服器資料內容。

步驟:

1。 去建立一個script標籤

2。 script的src屬性設定介面地址

3。 介面引數,必須要帶一個自定義函式名 要不然後臺無法返回資料。

4。 透過定義函式名去接收後臺返回資料

//去建立一個script標籤

var script = document。createElement(“script”);

//script的src屬性設定介面地址 並帶一個callback回撥函式名稱

script。src = “http://127。0。0。1:8888/index。php?callback=jsonpCallback”;

//插入到頁面

document。head。appendChild(script);

//透過定義函式名去接收後臺返回資料function jsonpCallback(data){

//注意 jsonp返回的資料是json物件可以直接使用

//ajax 取得資料是json字串需要轉換成json物件才可以使用。

}

2。 CORS:跨域資源共享

原理:伺服器設定Access-Control-Allow-OriginHTTP響應頭之後,瀏覽器將會允許跨域請求

限制:瀏覽器需要支援HTML5,可以支援POST,PUT等方法相容ie9以上

需要後臺設定

Access-Control-Allow-Origin: * //允許所有域名訪問,或者

Access-Control-Allow-Origin: http://a。com //只允許所有域名訪問

3。反向代理

4。window+iframe

14。http常見狀態碼有哪些?

一: 2開頭狀態碼

2xx (成功)表示成功處理了請求的狀態程式碼

200 (成功) 伺服器已成功處理了請求。 通常。

二: 3開頭狀態碼

3xx (重定向) 表示要完成請求,需要進一步操作。 通常,這些狀態程式碼用來重定向。

304 (未修改) 自從上次請求後,請求的網頁未修改過。 伺服器返回此響應時,不會返回網頁內容。

三: 4開頭狀態碼

4xx(請求錯誤) 這些狀態程式碼表示請求可能出錯,妨礙了伺服器的處理

1:400 (錯誤請求) 伺服器不理解請求的語法。

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

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

四: 5開頭狀態碼

5xx(伺服器錯誤)這些狀態程式碼表示伺服器在嘗試處理請求時發生內部錯誤。 這些錯誤可能是伺服器本身的錯誤,而不是請求出錯

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

15 介紹一下XMLHttpRequest物件的常用方法和屬性

open(“method”,”URL”) 建立對伺服器的呼叫,第一個引數是HTTP請求 方式可以為GET,POST或任何伺服器所支援的您想呼叫的方式。

第二個引數是請求頁面的URL。

send()方法,傳送具體請求

abort()方法,停止當前請求

readyState屬性 請求的狀態 有5個可取值0=未初始化 ,1=正在載入

2=以載入,3=互動中,4=完成

responseText 屬性 伺服器的響應,表示為一個串

reponseXML 屬性 伺服器的響應,表示為XML

status 伺服器的HTTP狀態碼,200對應ok 400對應not found

16什麼是XML

XML是擴充套件標記語言,能夠用一系列簡單的標記描述資料

17。AJAX都有哪些優點和缺點?

1、最大的一點是頁面無重新整理,使用者的體驗非常好。

2、使用非同步方式與伺服器通訊,具有更加迅速的響應能力。

3、可以把以前一些伺服器負擔的工作轉嫁到客戶端,利用客戶端閒置的能力來處理,減輕伺服器和頻寬的負擔,節約空間和寬頻租用成本。並且減輕伺服器的負擔,ajax的原則是“按需取資料”,可以最大程度的減少冗餘請求,和響應對伺服器造成的負擔。

4、基於標準化的並被廣泛支援的技術,不需要下載外掛或者小程式。

ajax的缺點

1、ajax不支援瀏覽器back按鈕。

2、安全問題 AJAX暴露了與伺服器互動的細節。

3、對搜尋引擎的支援比較弱。

4、破壞了程式的異常機制。

5、不容易除錯。