Ajax+JSON
Ajax:無重新整理:不斷重新整理整個頁面,只重新整理區域性(只更新部分頁面,有效利用頻寬,提供連續的使用者體驗,提供類似C/S的互動效果,操作更方便)
XMLHttpRequest
事件 (onreadystatechange):指定回撥函式
常用屬性(readyState):XMLHttpRequest的狀態資訊
- 整個Ajax技術的核心
- 提供非同步傳送請求的能力
- 常用方法
方法 | 說明 |
0 |
未初始化 |
1 | 開始傳送請求 |
2 | 請求傳送完成 |
3 | 開始讀取響應 |
4 | 讀取響應結束 |
方法 | 說明 |
open(String method,String url,boolean asunc, String user,String password) |
建立一個新的HTTP請求 |
send(String data) |
傳送請求到服務端 |
abort() | 取消當前請求 |
setRequestHeader(String header,String value) | 設定請求的某個HTTP頭資訊 |
getRequestHeader(String header) | 獲取響應的指定HTTP頭資訊 |
getAllResponseHeader() | 獲取響應的所有HTTP頭資訊 |
常用屬性
- status:HTTP狀態碼
- statusText:返回當前請求的響應狀態
- responseText:以文字形式獲取響應的內容
- responseXML:將XML格式的響應內容解析成 DOM物件返回
Ajax實現步驟
建立XMLHttpRequest物件
通過XMLHttpRequest物件設定請求資訊(URL 資料 回撥函式)
向伺服器傳送請求
建立回撥函式,根據響應狀態動態更新頁面
編寫伺服器端處理客戶請求
使用Jquery實現Ajax
$.ajax([settings]);
常用屬性引數:
引數 | 型別 | 說明 |
url | String | 傳送請求的地址,預設為當前頁地址 |
type | String | 請求方式,預設為GET |
data | PlainObject或String 或 Array |
傳送伺服器的資料 |
data Type | String | 預期伺服器返回的資料型別 包括:XML,HTML,Script,JSON,JSONP ,Text |
timeout | Number | 設定請求超時時間 |
常用函式引數
引數 | 型別 | 說明 |
beforeSend | Function()(jqXHR jqxhr, PlainObject settings) |
傳送請求前呼叫函式 |
success | Function(任意型別 result, jqxhr jqxhr) |
請求成功後呼叫的函式 引數result:可選,有服務 器返回的引數 |
error | Function(JqXHR jqxhr, String textStatus, String errorThrown) |
請求失敗時呼叫的函式 |
complete | Function(jqXHR jqxhr, String textStatus) |
請求完成後(無論成功還是失敗都呼叫的函式) |
語法:
$.ajax({
url:'', //url地址
type:'GET', //jsonp 型別下只能使用GET,不能用POST,這裡不寫預設為GET
dataType:'jsonp', //指定為jsonp型別
data:{}, //資料引數
jsonp:'callback', //伺服器端獲取回撥函式名的key;callback是預設值
jsonpCallback:'jsonpName', //回撥函式名
success:function(result){ //成功執行處理,對應後臺返回的jsonpName(data)方法
},
error:function(XMLHttpRequest, textStatus, errorThrown){
//通常情況下textStatus和errorThrown只有其中一個包含資訊
}
});
JSON
JSON(JavaScript Object Notation)
- 一種輕量級的資料交換格式
- 採用獨立於語言的文字格式
- 通常用於在客戶端和伺服器之間傳遞資料
JSON優點
- 輕量級互動語言
- 結構簡單
- 易於解析
定義JSON物件
var JSON物件={"name":value,"name",value,....};
定義JSON陣列(兩種格式)
var JSON陣列 =[value,value,....]; 格式一
var JSON陣列 =[{"name":"value","name",value,....},{"name":"value","name",value,....}]; 格式二
Jquery的其他Ajax方法
$.get(url[,data][,success][,dataType]); //get提交方式請求
$.post(url[,data][,success][,dataType]); //post提交方式請求
引數 | 型別 | 說明 |
url | String | 必選,傳送請求的地址 |
data | PlainObject或String | 傳送到伺服器的資料 |
success | Function(PlainObject result, String textStatus,jqXHR jqxhr) |
請求成功後呼叫的函式, 引數result:可選,由伺服器返回的資料 |
dataType | String | 預期伺服器返回的資料型別 包括:XML,HTML,Script JSON,JSONP,text |
$.getJSON(url[,data][,success]);
使用Ajax直接載入頁面內容
.load()
${selector}.load(url[,data][,success][,complete]);
使用.load()實現非同步互動
${selector),load(url,data);