Ajax使用過程當中常見的問題

1 、Ajax 是什麼? ? 如何建立一個 Ajax ?

Ajax 並不算是一種新的技術,全稱是 asynchronous javascript and xml,能夠說是已 有技術的組合,主要用來實現客戶端與服務器端的異步通訊效果,實現頁面的局部刷新,早 期的瀏覽器並不能原生支持 ajax,可使用隱藏幀(iframe)方式變相實現異步效果,後 來的瀏覽器提供了對 ajax 的原生支持javascript

使 用 ajax 原 生 方 式 發 送 請 求 主 要 通 過 XMLHttpRequest( 標 準 瀏 覽 器 ) 、 ActiveXObject(IE 瀏覽器)對象實現異步通訊效果css

基本步驟:java

var xhr =null;//建立對象
if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}else{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
xhr.open(「方式」,」地址」,」標誌位」);//初始化請求
xhr.setRequestHeader(「」,」」);//設置 http 頭信息
xhr.onreadystatechange =function(){}//指定回調函數
xhr.send();//發送請求
複製代碼

js 框架(jQuery/EXTJS 等)提供的 ajax API 對原生的 ajax 進行了封裝,熟悉了基礎 理論,再學習別的框架就會駕輕就熟,好多都是換湯不換藥的內容ajax

2 、同步和異步的區別? ?

  • 同步:阻塞的

張三叫李四去吃飯,李四一直忙得不停,張三一直等着,直到李四忙完兩我的一塊去吃飯 =瀏覽器向服務器請求數據,服務器比較忙,瀏覽器一直等着(頁面白屏),直到服務器返 回數據,瀏覽器才能顯示頁面數據庫

  • 異步:非阻塞的

張三叫李四去吃飯,李四在忙,張三說了一聲而後本身就去吃飯了,李四忙完後本身去吃 =瀏覽器向服務器請求數據,服務器比較忙,瀏覽器能夠自如的幹原來的事情(顯示頁面), 服務器返回數據的時候通知瀏覽器一聲,瀏覽器把返回的數據再渲染到頁面,局部更新json

3 、如何解決跨域問題? ?

理解跨域的概念:協議、域名、端口都相同才同域,不然都是跨域api

出於安全考慮,服務器不容許 ajax 跨域獲取數據,可是能夠跨域獲取文件內容,因此 基於這一點,能夠動態建立 script 標籤,使用標籤的 src 屬性訪問 js 文件的形式獲取 js 腳本,而且這個 js 腳本中的內容是 函數調用,該函數調用的參數是服務器返回的數據,爲 了獲取這裏的參數數據,須要事先在頁面中定義回調函數,在回調函數中處理服務器返回的 數據,這就是解決跨域問題的主流解決方案跨域

4 、頁面編碼和被請求的資源編碼若是不一致如何處理?

對於 ajax 請求傳遞的參數:數組

  • 若是是 get 請求方式,參數若是傳遞中文,在有些瀏覽器 會亂碼,不一樣的瀏覽器對參數編碼的處理方式不一樣,因此對於 get 請求的參數須要使用 encodeURIComponent 函數對參數進行編碼處理,後臺開發語言都有相應的解碼 api。
  • 若是是 post 請求不須要進行編碼

5 、 簡述ajax 的過程。

  1. 建立 XMLHttpRequest 對象,也就是建立一個異步調用對象
  2. 建立一個新的 HTTP 請求,並指定該 HTTP 請求的方法、URL 及驗證信息
  3. 設置響應 HTTP 請求狀態變化的函數
  4. 發送 HTTP 請求
  5. 獲取異步調用返回的數據
  6. 使用 JavaScript 和 DOM 實現局部刷新

6 、闡述一下異步加載。

  1. 異步加載的方案: 動態插入 script 標籤
  2. 經過 ajax 去獲取 js 代碼,而後經過 eval 執行
  3. script 標籤上添加 defer 或者 async 屬性
  4. 建立並插入 iframe,讓它異步執行 js

七、請解釋一下JavaScript 的同源策略。

同源策略是客戶端腳本(尤爲是 Javascript)的重要的安全度量標準。它最先出自 Netscape Navigator2.0,其目的是防止某個文檔或腳本從多個不一樣源裝載。所謂同源指的 是:協議,域名,端口相同,同源策略是一種安全協議,指一段腳本只能讀取來自同一來源 的窗口和文檔的屬性。瀏覽器

8 、GET 和 和POST 的區別,什麼時候使用 POST ?

GET:通常用於信息獲取,使用 URL 傳遞參數,對所發送信息的數量也有限制,通常在 2000 個字符,有的瀏覽器是 8000 個字符 POST:通常用於修改服務器上的資源,對所發送的信息沒有限制 在如下狀況中,請使用 POST 請求:

  1. 沒法使用緩存文件(更新服務器上的文件或數據庫)
  2. 向服務器發送大量數據(POST 沒有數據量限制)
  3. 發送包含未知字符的用戶輸入時,POST 比 GET 更穩定也更可靠

9 、ajax 是什麼x ?ajax 的交互模型? ? 同步和異步的區別? ? 如何解決跨域問題? ?

  1. 經過異步模式,提高了用戶體驗
  2. 優化了瀏覽器和服務器之間的傳輸,減小沒必要要的數據往返,減小了帶寬佔用
  3. Ajax 在客戶端運行,承擔了一部分原本由服務器承擔的工做,減小了大用戶量下 的服務器負載。

十、 、Ajax 的最大的特色是什麼。

Ajax 能夠實現異步通訊效果,實現頁面局部刷新,帶來更好的用戶體驗;按需獲取數 據,節約帶寬資源;

11 、ajax 的缺點

一、ajax 不支持瀏覽器 back 按鈕。 二、安全問題 AJAX 暴露了與服務器交互的細節。 三、對搜索引擎的支持比較弱。 四、破壞了程序的異常機制。

12 、ajax 請求的時候 get 和 和 post 方式的區別

get 通常用來進行查詢操做,url 地址有長度限制,請求的參數都暴露在 url 地址當中, 若是傳遞中文參數,須要本身進行編碼操做,安全性較低。 post 請求方式主要用來提交數據,沒有數據長度的限制,提交的數據內容存在於 http 請求體中,數據不會暴漏在 url 地址中。

13 、解釋 p jsonp 的原理,以及爲何不是真正的 ajax

Jsonp 並非一種數據格式,而 json 是一種數據格式,jsonp 是用來解決跨域獲取數據 的一種解決方案,具體是經過動態建立 script 標籤,而後經過標籤的 src 屬性獲取 js 文件 中的 js 腳本,該腳本的內容是一個函數調用,參數就是服務器返回的數據,爲了處理這些 返回的數據,須要事先在頁面定義好回調函數,本質上使用的並非 ajax 技術

14 、什麼是Ajax 和 和 JSON ,它們的優缺點。

  • Ajax 是全稱是 asynchronous JavaScript andXML,即異步 JavaScript 和 xml,用於在 Web 頁面中實現異步數據交互,實現頁面局部刷新。

優勢:可使得頁面不重載所有內容的狀況下加載局部內容,下降數據傳輸量,避免用 戶不斷刷新或者跳轉頁面,提升用戶體驗 缺點:對搜索引擎不友好;要實現 ajax 下的先後退功能成本較大;可能形成請求數的 增長跨域問題限制;

  • JSON 是一種輕量級的數據交換格式,ECMA 的一個子集

優勢:輕量級、易於人的閱讀和編寫,便於機器(JavaScript)解析,支持複合數據類 型(數組、對象、字符串、數字)

15 、p http 常見的狀態碼有那些?分別表明是什麼意思?

200 - 請求成功 301 - 資源(網頁等)被永久轉移到其它 URL 404 - 請求的資源(網頁等)不存在 500 - 內部服務器錯誤

16入 、一個頁面從輸入 L URL 到頁面加載顯示完成,這個過程當中都發生了什麼?

分爲 4 個步驟:

  1. 當發送一個 URL 請求時,無論這個 URL 是 Web 頁面的 URL 仍是 Web 頁面上每一個資源 的 URL,瀏覽器都會開啓一個線程來處理這個請求,同時在遠程 DNS 服務器上啓動一個 DNS 查詢。這能使瀏覽器得到請求對應的 IP 地址。
  2. 瀏覽器與遠程 Web 服務器經過 TCP 三次握手協商來創建一個 TCP/IP 鏈接。該握手包 括一個同步報文,一個同步-應答報文和一個應答報文,這三個報文在 瀏覽器和服務器之間 傳遞。該握手首先由客戶端嘗試創建起通訊,然後服務器應答並接受客戶端的請求,最後由 客戶端發出該請求已經被接受的報文。
  3. 一旦 TCP/IP 鏈接創建,瀏覽器會經過該鏈接向遠程服務器發送 HTTP 的 GET 請求。遠 程服務器找到資源並使用 HTTP 響應返回該資源,值爲 200 的 HTTP 響應狀態表示一個正 確的響應。
  4. 此時,Web 服務器提供資源服務,客戶端開始下載資源。

17 、ajax 請求的時候get 和 和post 方式的區別

get 通常用來進行查詢操做,url 地址有長度限制,請求的參數都暴露在 url 地址當中, 若是傳遞中文參數,須要本身進行編碼操做,安全性較低。 post 請求方式主要用來提交數據,沒有數據長度的限制,提交的數據內容存在於 http 請求體中,數據不會暴漏在 url 地址中。

18 、ajax 請求時,如何解釋 n json 數據

使用 eval() 或者 JSON.parse() 鑑於安全性考慮,推薦使用 JSON.parse()更靠譜,對 數據的安全性更好。

19 、.javascript 的本地對象,內置對象和宿主對象

本地對象爲獨立於宿主環境的 ECMAScript 提供的對象,包括 Array Object RegExp 等 能夠 new 實例化的對象 內置對象爲 Gload,Math 等不能夠實例化的(他們也是本地對象,內置對象是本地對象 的一個子集) 宿主對象爲全部的非本地對象,全部的 BOM 和 DOM 對象都是宿主對象,如瀏覽器自帶的 document,window 等對象

20 、 爲何利用多個域名來存儲網站資源會更有效?

確保用戶在不一樣地區能用最快的速度打開網站,其中某個域名崩潰用戶也能經過其餘鬱 悶訪問網站,而且不一樣的資源放到不一樣的服務器上有利於減輕單臺服務器的壓力。

21 、 請說出三種減低頁面加載時間的方法

一、壓縮 css、js 文件 二、合併 js、css 文件,減小 http 請求 三、外部 js、css 文件放在最底下 四、減小 dom 操做,儘量用變量替代沒必要要的 dom 操做

22 、P HTTP 狀態碼都有那些。

200 OK //客戶端請求成功 400 Bad Request //客戶端請求有語法錯誤,不能被服務器所理解 403 Forbidden //服務器收到請求,可是拒絕提供服務 404 Not Found //請求資源不存在,輸入了錯誤的 URL 500 Internal Server Error //服務器發生不可預期的錯誤 503 Server Unavailable //服務器當前不能處理客戶端的請求,一段時間後可能恢復正常

相關文章
相關標籤/搜索