首頁  >  文章  >  web前端  >  Ajax怎麼實現網頁非同步更新

Ajax怎麼實現網頁非同步更新

php中世界最好的语言
php中世界最好的语言原創
2018-02-28 09:41:112134瀏覽

這次帶給大家Ajax怎樣實現網頁非同步更新,Ajax實作網頁非同步更新的注意事項有哪些,以下就是實戰案例,一起來看一下。

1:ajax的概念

全名為:Asynchronous Javascript And Xml

AJAX不是一種新的程式語言,而是一種用於創建更快更好以及互動性更強的WEB應用程式技術,該技術在98年前後得到了應用。透過AJAX,你的JS可以透過JS的XMLHttpRequest物件在頁面不重載的情況下與伺服器直接進行通訊。這樣可以在伺服器請求到想要的數據,而不是整個頁面。 AJAX的核心就是JS的XMLHttpRequest物件。 xhr物件是在IE5中首次引入,它是一種支援非同步請求的物件。

 2:ajax的優點

無刷新更新資料。

非同步與伺服器通訊。

基於標準被廣泛支持。

前端與後端分開。

節省頻寬。

 3:寫步驟

1.建立XMLHttpRequest物件。

所有現代瀏覽器(IE7+,chrome,firefox,opera,safari)均內建XMLHttpRequest物件。但是IE5、6使用ActiveXObject物件

function getAjax() {
var  xmlhttp = null;
if(window.ActiveXObject){
         xmlhttp = new ActiveXObject(’Microsoft.XMLHTTP’);
} else if(window.XMLHttpRequest){
         xmlhttp = new XMLHttpRequest();
}
return  xmlhttp;
}

2.開啟與Server的連接,指定傳送方式、URL以及權限等。

open方法:建立新的HTTP請求,並指定此請求的方法,URL以及驗證資訊。

xhr.open(type, url, async, user, password);

type:HTTP請求方式,GET、POST等。大小寫不敏感。

url:請求位址。

async:布林型,請求是否為非同步方式。預設為true。如果為真,當狀態改變時會呼叫onreadystatechange屬性指定的回呼函數。 (可選)

user:如果伺服器需要驗證,此處指定使用者名,如果未指定,當伺服器需要驗證時,會彈出驗證視窗。 (少用僅了解)

password:驗證資訊中的密碼部分,如果使用者名為空,則此值將會被忽略。 (少用只了解)

註:

     在AJAX中,其實我們就是來模擬正常的表單提交資料。正常的表單在POST資料時,會發送Content-Type字段,所以我們在AJAX中就要指定該字段值為application/x-www-form-urlencoded。並且對字段名稱和值進行編碼處理在發送。使用setRequestHeader:單獨指定請求的某個HTTP頭。

註:資料應使用encocdeURIComponent()函數進行編碼。

3.發送指令。

send():傳送請求到HTTP伺服器並接收回應。

此方法的同步或非同步方式取決於open方法中的async參數,如果async為true,此方法將立即返回,如果為false,此方法將會等待請求完成或逾時時才會返回。

xhr.send(body);

body:透過此請求傳送的資料。 GET請求設定為null即可。

4.等待並接收伺服器傳回的處理結果。

5.客戶端接收。

6.釋放XMLHttpRequest物件。

 4:回呼函數

透過onreadystatechange屬性指定readystate屬性改變時的事件處理回呼函數。

xhr.onreadystatechange = function(){}

readyState屬性:傳回請求的目前狀態。

狀態:

0:物件已建立,尚未初始化(未呼叫open方法)。

1:物件已建立,尚未呼叫send方法。

2:send方法已呼叫。但是目前的狀態以及HTTP狀態未知。

3:開始接收數據,因為回應以及HTTP頭不全,這時透過responseBody和responseText取得部分數據會出現錯誤。

4:資料接收完畢,此時可以透過responseBody和responseText取得完整的回應資料。

status屬性:傳回目前請求的狀態碼。

200 OK:請求文件已經找到,並正確返回。

304 Not Modified:擁有一個本機的快取副本,伺服器端內容與此相同。

403 Forbidden:請求者對所要求的文件不具有對應的權限。

404 Not Found:請求的文件找不到。

statusText屬性:傳回目前請求的回應行資訊。

responseXML屬性:將回應資訊格式化為XML Document物件傳回。

responseText屬性:將回應資訊作為字串傳回。

5:JS解析JSON

 JSON簡介:(js文章中有提到)

定義:Javascript Object Notation,一種輕量級的基於文本的數據交換格式,易於人閱讀和編寫,也能提高網路傳輸速率。

 ES5新增的兩個方法:

 JSON.parse:將JSON字串資料轉換為JSON物件。

 JSON.stringify:將JSON物件轉換為JSON字串。

 註:1、瀏覽器支援:IE8+。 

  2、JSON格式的字串裡面的key或字串型的value都必須用雙引號包裹。

 6:局部資料刷新

       作業對應的DOM節點(例如註解清單的分頁效果)

  7:事件委託的應用

 事件委託:利用冒泡機制,將子元素事件委託給父元素執行(例如某些新聞網站有去除部分用戶不喜好的新聞)

 8:前後端分離

 後台只管資料輸出和業務邏輯處理,前端負責互動邏輯和介面展示。簡單的說:前端靜態頁面中沒有有後台程式碼,後台輸出不帶有HTML標籤的資料。

前後端分離靠ajax來實現資料的交互作用。 (函數分裝實現具體的分離,demo中給出)

相信看了這些案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

相關閱讀:

如何解決layer.photos()非同步修改圖片位址後顯示異常的問題


##

以上是Ajax怎麼實現網頁非同步更新的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn