一、json
1、 json是什麼
它是js提供的一種數據交換格式!
2、json的語法
{}:是對象!
屬性名必須使用雙引號括起來!單引不行!!!
屬性值: null、數值、字符串、 數組:使用[]括起來、boolean值:true和false
eg:
var person = {"name":"zhangSan", "age":18, "sex":"male"};
3、json與xml比較
* 可讀性:XML勝出
* 解析難度:JSON本身就是JS對象(主場作戰),所以簡單很多
* 流行度:XML已經流行好多年,但在AJAX領域,JSON更受歡迎。
4、把java對象轉成json對象
* JSONObject --> Map
> toString();
> JSONObject map = JSONObject.fromObject(person):把對象轉換成JSONObject對象
* JSONArray --> List
> toString()
> JSONArray jsonArray = JSONObject.fromObject(list):把list轉換成JSONArray對象
二、ajax
1、ajax是什麼
異步請求,局部刷新
2、異步交互和同步交互
* 同步:
> 發一個請求,就要等待服務器的響應結束,然後才能發第二個請求!中間這段時間就是一個字“卡”
> 刷新的是整個頁面!
* 異步:
> 發一個請求後,無需等待服務器的響應,然後就可以發第二個請求!
> 可以使用js接收服務器的響應,然後使用js來局部刷新!
3. ajax應用場景
* 百度的搜索框
* 用戶註冊時(校驗用戶名是否被註冊過)
4. ajax的優缺點
優點:
* 異步交互:增強了用戶的體驗!
* 性能:因爲服務器無需再響應整個頁面,只需要響應部份內容,所以服務器的壓力減輕了!
缺點:
* ajax不能應用在所有場景!
* ajax無端的增多了對服務器的訪問次數,給服務器帶來了壓力!
5、ajax發送異步請求(四步操作)
第一步(得到XMLHttpRequest)
* ajax其實只需要學習一個對象:XMLHttpRequest,如果掌握了它,就掌握了ajax!!!
* 得到XMLHttpRequest
> 大多數瀏覽器都支持:var xmlHttp = new XMLHttpRequest();
> IE6.0:var xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
> IE5.5以更早版本的IE:var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
* 編寫創建XMLHttpRequest對象的函數
function createXMLHttpRequest() {
try {
return new XMLHttpRequest();
} catch(e) {
try {
return new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try {
return new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
alert("哥們兒,你用的是什麼瀏覽器啊?");
throw e;
}
}
}
}
2. 第二步(打開與服務器的連接)
* xmlHttp.open():用來打開與服務器的連接,它需要三個參數:
> 請求方式:可以是GET或POST
> 請求的URL:指定服務器端資源,例如;/day23_1/AServlet
> 請求是否爲異步:如果爲true表示發送異步請求,否則同步請求!
* xmlHttp.open("GET", "/day23_1/AServlet", true);
3. 第三步(發送請求)
* xmlHttp.send(null):如果不給可能會造成部份瀏覽器無法發送!
> 參數:就是請求體內容!如果是GET請求,必須給出null。
4. 第四步()
* 在xmlHttp對象的一個事件上註冊監聽器:onreadystatechange
* xmlHttp對象一共有5個狀態:
> 0狀態:剛創建,還沒有調用open()方法;
> 1狀態:請求開始:調用了open()方法,但還沒有調用send()方法
> 2狀態:調用完了send()方法了;
> 3狀態:服務器已經開始響應,但不表示響應結束了!
> 4狀態:服務器響應結束!(通常我們只關心這個狀態!!!)
* 得到xmlHttp對象的狀態:
> var state = xmlHttp.readyState;//可能是0、1、2、3、4
* 得到服務器響應的狀態碼
> var status = xmlHttp.status;//例如爲200、404、500
* 得到服務器響應的內容1
> var content = xmlHttp.responseText;//得到服務器的響應的文本格式的內容
> var content = xmlHttp.responseXML;//得到服務器的響應的xml響應的內容,它是Document對象了!
xmlHttp.onreadystatechange = function() {//xmlHttp的5種狀態都會調用本方法
if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {//雙重判斷:判斷是否爲4狀態,而且還要判斷是否爲200
// 獲取服務器的響應內容
var text = xmlHttp.responseText;
}
};