學習jQuery中的Ajax 前須要先認識其如何封裝的html
AJAX工具函數
爲何須要AJAX工具函數:ajax
關鍵點:json
不一樣部分:數組
函數的封裝形式:瀏覽器
var $ = { ajax:function(option){ // 實現具體的業務處理 } }
代碼實現:緩存
var $ = { //傳入對象 ajax:function(option){ // 實現具體的業務處理 var xhr = new XMLHttpRequest() // 接收參數 var type= option.type || 'get' // location.pathname:當前頁面的全路徑 var url = option.url || location.pathname var data = option.data || '' var dataType = option.dataType || 'text/html' var success = option.success // 發送請求 // 設置請求行:get若是有參數就須要拼接在url後面,post不用拼接 if(type == 'get'){ url = url + "?" + data data = null } xhr.open(type,url) // 設置請求頭:get方式不須要設置請求頭,post方式須要設置Content-Type if(type == 'post'){ xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded') } // 設置請求體:若是有參數,post方式在請求體中傳遞參數 xhr.send(data) // 接收響應 xhr.onload = function(){ // 調用回調 success && success(this.response) } } }
由以上封裝的函數,能夠看出在客戶端每次發判斷請求: 不一樣方式的請求,不一樣參數,不一樣url,只要用以上的函數傳入所需的參數便可獲得結果,作到了代碼的複用,使代碼更簡潔.提高了開發效率.服務器
而在jQuery中已經封裝好了以上所需的功能:app
$.ajax({}) 可配置方式發起Ajax請求dom
url 接口地址 *
(
類型:String
默認值: 當前頁地址。發送請求的地址。
)異步
type 請求方式 *
(
類型:String
默認值: "GET")。請求方式 ("POST" 或 "GET"), 默認爲 "GET"。注意:其它 HTTP 請求方法,如 PUT 和 DELETE 也可使用,但僅部分瀏覽器支持。
)
timeout 請求超時
(
類型:Number
設置請求超時時間(毫秒)。此設置將覆蓋全局設置。
)
dataType 服務器返回格式 *
(
類型:String
預期服務器返回的數據類型。若是不指定,jQuery 將自動根據 HTTP 包 MIME 信息來智能判斷,好比 XML MIME 類型就被識別爲 XML。在 1.4 中,JSON 就會生成一個 JavaScript 對象,而 script 則會執行這個腳本。
隨後服務器端返回的數據會根據這個值解析後,傳遞給回調函數。可用值:
"xml": 返回 XML 文檔,可用 jQuery 處理。
"html": 返回純文本 HTML 信息;包含的 script 標籤會在插入 dom 時執行。
"script": 返回純文本 JavaScript 代碼。不會自動緩存結果。除非設置了 "cache" 參數。注意:在遠程請求時(不在同一個域下),全部 POST 請求都將轉爲 GET 請求。(由於將使用 DOM 的 script標籤來加載)
"json": 返回 JSON 數據 。
"jsonp": JSONP 格式。使用 JSONP 形式調用函數時,如 "myurl?callback=?" jQuery 將自動替換 ? 爲正確的函數名,以執行回調函數。
"text": 返回純文本字符串
)
data 發送請求數據 *
(
類型:String
發送到服務器的數據。將自動轉換爲請求字符串格式。GET 請求中將附加在 URL 後。查看 processData 選項說明以禁止此自動轉換。
必須爲 Key/Value 格式。若是爲數組,jQuery 將自動爲不一樣值對應同一個名稱。如 {foo:["bar1", "bar2"]} 轉換爲 '&foo=bar1&foo=bar2'。
)
beforeSend:function () {} 請求發起前調用 *
(
類型:Function
發送請求前可修改 XMLHttpRequest 對象的函數,如添加自定義 HTTP 頭。
XMLHttpRequest 對象是惟一的參數。
這是一個 Ajax 事件。若是返回 false 能夠取消本次 ajax 請求。
)
success 成功響應後調用 *
(
類型:Function
請求成功後的回調函數。
參數:由服務器返回,並根據 dataType 參數進行處理後的數據;描述狀態的字符串。
這是一個 Ajax 事件。
)
error 錯誤響應時調用
(
類型:Function
默認值: 自動判斷 (xml 或 html)。請求失敗時調用此函數。
有如下三個參數:XMLHttpRequest 對象、錯誤信息、(可選)捕獲的異常對象。
若是發生了錯誤,錯誤信息(第二個參數)除了獲得 null 以外,還多是 "timeout", "error", "notmodified" 和 "parsererror"。
這是一個 Ajax 事件。
)
complete 響應完成時調用(包括成功和失敗) *
(
類型:Function
請求完成後回調函數 (請求成功或失敗以後均調用)
參數: XMLHttpRequest 對象和一個描述請求類型的字符串。
這是一個 Ajax 事件。
)
$.get(url,data,callback,dataType) 以GET方式發起Ajax請求
$.post(url,data,callback,dataType) 以POST方式發起Ajax請求
$('form').serialize()序列化表單(即格式化key=val&key=val)