AJAX即“Asynchronous Javascript And XML”(異步JavaScript和XML)
通過在后臺與服務器進行少量數據交換,AJAX 可以使網頁實現異步更新。這意味著可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。
XMLHttpRequest用于在后臺與服務器交換數據。 XMLHttpRequest 對象提供了對 HTTP 協議的完全的訪問,包括做出 POST 和 HEAD 請求以及普通的 GET 請求的能力。XMLHttpRequest 可以同步或異步返回 Web 服務器的響應,并且能以文本或者一個 DOM 文檔形式返回內容。盡管名為 XMLHttpRequest,它并不限于和 XML 文檔一起使用:它可以接收任何形式的文本文檔。
所有現代瀏覽器 (IE7+、Firefox、Chrome、Safari 以及 Opera) 都內建了 XMLHttpRequest 對象。
老版本的IE瀏覽器(ie5,6使用)Activex對象。
我們要認識一個協議:HTTP(超文本傳輸協議),它是一種無狀態的協議,意思就是不建立持久鏈接,每次向web服務器請求連接,得到響應之后斷開,下一次請求需要重新建立連接。
如何用XMLHttprequest對象發送http請求:
- open(method,url,async)
method:表示請求類型,GET,POST(不區分大小寫)
url:文件在服務器上的位置,可以是相對地址,也可以是絕對地址
async:true(同步),false(異步),默認的是異步
2,send(string)
有一個參數,對于GET請求,它的數據都拼在url地址中,所以該方法僅限于POST方法
下面是一些例子:
分析:對于第二種,post請求沒有給出參數,在實際中意義不大,通常都是第三種,send一些信息。
setRequestHeader 設置http的頭信息,告訴Web服務器,要發送一個表單,注意位置,要放在open和send中間,否則,會拋出一個異常。
如何獲取服務器給出的響應:
我們可以監聽readyState屬性的變化,該屬性變化代表著服務器響應的變化
我們可以通過onreadystatechange這個事件監聽屬性的變化,在每次readyState屬性發生變化時,觸發這個事件。我們一般監聽響應是否完成,主要是監聽readyState屬性狀態為4
當響應完成,且請求發送成功,我們就可以做一些事情,比如獲取服務器響應的內容,然后在頁面上做一些呈現
JSON(JavaScript Object Notation) javascript對象表示法
JSON 是存儲于交換文本信息的語法,類似XML,采用鍵值對的方式來組織,易于人們閱讀和編寫,同時也易于機器解析和生成。
JSON是獨立于語言的,也就是說不論什么語言都可以解析成JSON,只要按照JSON的規則來就行。
JSON的優點:1,json的長度和xml比起來更短小,在網絡中傳輸可以大大的減小帶寬,
2,json的讀寫速度更快
3,json可以使用javascript內建的方法直接進行解析,轉換成javascript對象,非常方便。
JSON的書寫格式:名稱/值對
名稱寫在前面,寫在雙引號中,值對寫在后面,也寫在雙引號中。中間用冒號隔開。
json的值可以是下面幾種類型:
- 數字(整數和浮點數)
- 字符串(在雙引號中)
- 邏輯值(true false)
- 數組(在方括號中)
- 對象(在花括號中)
- null
分析:上面是個典型的JSON字符串,首先放在一個花括號中,表示是一個json對象,對象中有一個值對,名稱叫“staff”,值是一個數組,這個數組又有很多小的json對象來組成,每個對象里面又有兩個屬性
JSON的解析有兩種方式:
eval和JSON.parse。在代碼中執行eval,是很危險的,特別是執行第三方的JSON數據(其中可能包含惡意代碼),所以盡可能的使用JSON.parse()解析字符串本身,該方法可以捕捉到JSON中的語法錯誤。用eval()方法不僅解析了JSON字符串,還執行了JSON字符串中的一些方法,也就是說用eval()方法,它不會看JSON字符串是否合法。
這里推薦一款叫JSONlint的工具:http://jsonlint.com/ 可以校驗JSON字符串中的語法錯誤。
對于服務器端PHP,轉換成JSON格式,我們可以做如下的改動:
1,首先將header("Content-Type:application/json;charset=utf-8");
2,然后將所有的輸出改為JSON格式
3,然后將客戶端,服務器傳來的值 request.responseText 用JSON.parse()方法解析,解析之后,我們可以直接讀取服務器傳來對象的屬性。
jQuery中的Ajax
通常我們不會用原生的javascript來寫ajax,我們會用第三方的js庫,例如jQuery庫,這些js庫中已經封裝了類似于ajax請求的方法,這樣,我們在使用中,就可以不用關注瀏覽器的兼容性,調用方法。可以大大簡化我們的操作。jquery中本身提供了一個ajax方法:
![]() |
不含病毒。www.avast.com |