ajax和json

一、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;

      }

  };

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章