jQuery AJAX 函數詳解與實例應用

什麼是 AJAX?

AJAX = Asynchronous JavaScript and XML.javascript

AJAX 是一種建立快速動態網頁的技術。php

AJAX 經過在後臺與服務器交換少許數據的方式,容許網頁進行異步更新。這意味着有可能在不重載整個頁面的狀況下,對網頁的一部分進行更新。html

AJAX 和 jQuery

jQuery 提供了用於 AJAX 開發的豐富函數(方法)庫。java

經過 jQuery AJAX,使用 HTTP Get 和 HTTP Post,您均可以從遠程服務器請求 TXT、HTML、XML 或 JSON。python

並且您能夠直接把遠程數據載入網頁的被選 HTML 元素中!jquery

1:Query 的 load 函數是一種簡單的(但很強大的)AJAX 函數。它的語法以下:ajax

$(selector).load(url,data,callback): 把遠程數據加載到被選的元素中,只有當您但願向服務器發送數據時,才須要使用 data 參數。只有當您須要在執行完畢以後觸發一個函數時,您才須要使用 callback 參數。json

url (String) : 請求的HTML頁的URL地址。 數組

data (Map) : (可選參數) 發送至服務器的 key/value 數據。 瀏覽器

callback (Callback) : (可選參數) 請求完成時(不須要是success的)的回調函數。 (參考此文章最尾部所舉實例)

2:jQuery.get( url, [data], [callback] ):使用GET方式來進行異步請求

url (String) :  發送請求的URL地址.

data (Map) : (可選) 要發送給服務器的數據,以 Key/value 的鍵值對形式表示,會作爲QueryString附加到請求URL中。

callback (Function) : (可選) 載入成功時回調函數(只有當Response的返回狀態是success纔是調用該方法)。

3. jQuery.post( url, [data], [callback], [type] ) :使用POST方式來進行異步請求:

url (String) : 發送請求的URL地址.

data (Map) : (可選) 要發送給服務器的數據,以 Key/value 的鍵值對形式表示。

callback (Function) : (可選) 載入成功時回調函數(只有當Response的返回狀態是success纔是調用該方法)。

type (String) : (可選)官方的說明是:Type of data to be sent。其實應該爲客戶端請求的類型(JSON,XML,等等)

4:jQuery.ajax( options ) : 經過 HTTP 請求加載遠程數據

這個是jQuery 的底層 AJAX 實現。簡單易用的高層實現見 $.get, $.post 等。

$.ajax() 返回其建立的 XMLHttpRequest 對象。大多數狀況下你無需直接操做該對象,但特殊狀況下可用於手動終止請求。

注意: 若是你指定了 dataType 選項,請確保服務器返回正確的 MIME 信息,(如 xml 返回 "text/xml")。錯誤的 MIME 類型可能致使不可預知的錯誤。當設置 datatype 類型爲 'script' 的時候,全部的遠程(不在同一個域中)POST請求都回轉換爲GET方式。

參數列表:

參數名 類型 描述
url String (默認: 當前頁地址) 發送請求的地址。
type String (默認: "GET") 請求方式 ("POST" 或 "GET"), 默認爲 "GET"。注意:其它 HTTP 請求方法,如 PUT 和 DELETE 也可使用,但僅部分瀏覽器支持。
timeout Number 設置請求超時時間(毫秒)。此設置將覆蓋全局設置。
async Boolean (默認: true) 默認設置下,全部請求均爲異步請求。若是須要發送同步請求,請將此選項設置爲 false。注意,同步請求將鎖住瀏覽器,用戶其它操做必須等待請求完成才能夠執行。
beforeSend Function 發送請求前可修改 XMLHttpRequest 對象的函數,如添加自定義 HTTP 頭。XMLHttpRequest 對象是惟一的參數。
function (XMLHttpRequest) {

         this; // the options for this ajax request          }
cache Boolean (默認: true) jQuery 1.2 新功能,設置爲 false 將不會從瀏覽器緩存中加載請求信息。
complete Function 請求完成後回調函數 (請求成功或失敗時均調用)。參數: XMLHttpRequest 對象,成功信息字符串。
function (XMLHttpRequest, textStatus) {

         this; // the options for this ajax request          }
contentType String (默認: "application/x-www-form-urlencoded") 發送信息至服務器時內容編碼類型。默認值適合大多數應用場合。
data Object,
String
發送到服務器的數據。將自動轉換爲請求字符串格式。GET 請求中將附加在 URL 後。查看 processData 選項說明以禁止此自動轉換。必須爲 Key/Value 格式。若是爲數組,jQuery 將自動爲不一樣值對應同一個名稱。如 {foo:["bar1", "bar2"]} 轉換爲 '&foo=bar1&foo=bar2'。
dataType String

預期服務器返回的數據類型。若是不指定,jQuery 將自動根據 HTTP 包 MIME 信息返回 responseXML 或 responseText,並做爲回調函數參數傳遞,可用值:

"xml": 返回 XML 文檔,可用 jQuery 處理。

"html": 返回純文本 HTML 信息;包含 script 元素。

"script": 返回純文本 JavaScript 代碼。不會自動緩存結果。

"json": 返回 JSON 數據 。

"jsonp": JSONP 格式。使用 JSONP 形式調用函數時,如 "myurl?callback=?" jQuery 將自動替換 ? 爲正確的函數名,以執行回調函數。

error Function (默認: 自動判斷 (xml 或 html)) 請求失敗時將調用此方法。這個方法有三個參數:XMLHttpRequest 對象,錯誤信息,(可能)捕獲的錯誤對象。
function (XMLHttpRequest, textStatus, errorThrown) {

         // 一般狀況下textStatus和errorThown只有其中一個有值           this; // the options for this ajax request          }
global Boolean (默認: true) 是否觸發全局 AJAX 事件。設置爲 false 將不會觸發全局 AJAX 事件,如 ajaxStart 或 ajaxStop 。可用於控制不一樣的Ajax事件
ifModified Boolean (默認: false) 僅在服務器數據改變時獲取新數據。使用 HTTP 包 Last-Modified 頭信息判斷。
processData Boolean (默認: true) 默認狀況下,發送的數據將被轉換爲對象(技術上講並不是字符串) 以配合默認內容類型 "application/x-www-form-urlencoded"。若是要發送 DOM 樹信息或其它不但願轉換的信息,請設置爲 false。
success Function 請求成功後回調函數。這個方法有兩個參數:服務器返回數據,返回狀態
function (data, textStatus) {

         // data could be xmlDoc, jsonObj, html, text, etc...          this; // the options for this ajax request          }
實例: index.html文件,記得要先引入jquery庫: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript" src="jquery-1.6.1.js"></script> <script>     $(document).ready(function(){         $("#change_con").click(function(){             /* ajax方法:             $.ajax({                 url:"index.php",                 type:"POST",                 async:false,                 success:function(data,status)                 {                     $("#con").html(data);                     //alert(data);                 }             })             */             //post方法:             /*             $.post("index.php",function(data){                 alert(data);                 $("#con").html(data);             });             */             //get方法:             /*             $.get("index.php",function(data){                 $("#con").html(data);                 alert(data);             });             */             //load方法:                         $("#con").load("test.html",function(data){                 alert(data);             });         })     }) </script> <title>test</title> </head> <body> <div id="con"><h2>這是要顯示的內容</h2></div> <input type="button" id="change_con" value="更改要顯示的內容" /> </body> </html> index.php文件可適狀況更改,好比個人是: <?php     echo "Hello,my name is Adam Li."; ?> 那麼此時返回的data將是"Hello,my name is Adam Li."; test.html文件: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>test</title> </head> <body> <h2>這是用jquery load方法作的效果!</h2> </body> </html> 此時返回的data顯示在dom中,直接顯示「這是用jquery load方法作的效果!」,若是用alert(data)的話將顯示整個test.html文件的代碼出來; 注意若是是用$.ajax方法的,要加「({})」而不是「()」,這點要區別$.post()與$.get(),另外,全部用用ajax請求,必定要用服務器(好比用wamp的http://localhost/..這樣的形式測試),不能以文件形式打開文件測試,不然可能沒法正確顯示效果。
相關文章
相關標籤/搜索