【Ajax教程詳解】

Ajax

1.1 ajax簡介

Ajax全稱爲「Asynchronous JavaScript and XML」(異步JavaScript和XML),是一種建立交互式網頁應用的網頁開發技術。javascript

Ajax是一種無需從新加載整個頁面的狀況下,可以更新部分網頁的技術。java

Ajax = 異步  JavaScript和XML。jquery

同步:同步方法調用一旦開始,調用者必須等到方法調用返回後,才能繼續後續的行爲。ajax

異步:異步方法調用更像一個消息傳遞,一旦開始,方法調用就會當即返回,調用者就能夠繼續後續的操做。json

Ajax經過在後臺與服務器進行少許數據交換,Ajax可使網頁實現異步更新。這意味着能夠在不從新加載整個頁面的狀況下,對網頁的某部分進行更新。數組

傳統的網頁(不適用Ajax)若是須要更新內容,必須重載整個網頁。瀏覽器

有不少使用Ajax的應用案例程序案例:新浪微博、Google地圖、開心網等;服務器

1.2 XMLHttpRequest

XMLHttpRequest對象網絡

XMLHttpRequest是Ajax的基礎,全部如今瀏覽器均支持XMLHttpRequest對象(IE5和IE6使用ActiveXObject)。app

全部現代瀏覽器(IE7+、Firefox、Chrome、Safari以及Opera)均內建XMLHttpRequest對象。

XMLHttpRequest用於在後臺與服務器交換數據。這意味着能夠在不從新加載整個頁面的狀況下,對頁面的某部分進行更新。

XMLHttpRequest使用流程

一、建立XMLHttpRequest對象

二、請求(同步或者異步請求)

三、響應

Request的Open方法

Request的Open方法

注意:默認方法是異步的,也就是開子線程,同步方法已經被廢棄,不能再用

1.3 Ajax準備狀態碼

request.readyState

0:請求未初始化

1:服務器鏈接已創建

2:請求已接收

3:請求處理中

4:請求已完成,且響應已就緒

1.4 Http響應狀態

request.status

200:‘OK’

404:未找到頁面

405:用來訪問本頁面的HTTP方法不被容許,也就是post不能請求get

1.5 獲取響應數據

request.responeText

1.6 登陸的get案例


ajax狀態碼和響應碼

Step1:寫一個get登陸表單

登陸表單


Step2:寫一個LoginServlet

LoginServlet


Step3:ajax的get請求

ajax的get請求

1.7 登陸的post案例

ajax的post請求流程

1.建立請求對象

2.鏈接

3.設置content-type請求頭(若是不設置請求頭,發送請求會失敗)

4.發送請求,傳遞請求參數

5.接收響應

post請求登陸的js代碼

2 JSON字符串

1.JSON指的是JavaScript對象表示法(JavaScript Object Notation)

2. JSON 是輕量級的文本數據交換格式

3. JSON獨立於語言

4. JSON具備自我描述性,更易理解。

2.1 Json字典

至關於java的map(鍵值對){「firstName」:「Bill」,「lastName」:「Gates」}

2.2 Json數組

至關於數組裏存了map,字典

[

{ "firstName":"Bill" , "lastName":"Gates" },

{ "firstName":"George" , "lastName":"Bush" },

{ "firstName":"Thomas" , "lastName":"Carter" }

]

2.3 Json字典

字典裏面存數組

{

"employees": [

{ "firstName":"Bill" , "lastName":"Gates" },

{ "firstName":"George" , "lastName":"Bush" },

{ "firstName":"Thomas" , "lastName":"Carter" }

]

}

2.4 js中的json對象和字符串相互轉換

json對象和字符串相互轉換


3.1 Jackson簡介

Jackson是一個簡單基於Java應用庫,Jackson能夠輕鬆的將Java對象轉換成json字符串和xml文檔,一樣也能夠將json、xml轉換成Java對象。Jackson所依賴的jar包較少,簡單易用而且性能也要相對高些,而且Jackson社區相對比較活躍,更新速度也比較快。

3.2 jackson特色

一、容易使用- jackson API提供了一個高層次外觀,以簡化經常使用的用例。

二、無需建立映射- API提供了默認的映射大部分對象序列化。

三、性能高-快速,低內存佔用,適合大型對象圖表或系統。

四、乾淨的JSON - jackson建立一個乾淨和緊湊的JSON結果,這是讓人很容易閱讀。

五、不依賴-庫不須要任何其餘的庫,除了JDK。

六、開源代碼- jackson是開源的,能夠無償使用。

3.3對象轉json字符串案例

對象轉json字符串


3.4 json字符串轉對象

String str = "{\"id\":\"1001\",\"name\":\"Java入門\",\"price\":19.88,\"pnum\":100,\"category\":\"IT\",\"description\":\"Good Book\"}";

System.out.println(str);//建立 "對象映射" 對象

ObjectMapper mapper = new ObjectMapper();

Book book = mapper.readValue(str, Book.class);

System.out.println(book);



4 ajax處理json數據


返回json數據

5 get請求中文處理

1.請求的url後面的參數不能傳中文

2.工做中對get請求對中文進行url編碼

3.url編碼是什麼

URL編碼遵循下列規則: 每對name/value由&;符分開;每對來自表單的name/value由=符分開。若是用 解碼軟件 解碼軟件 戶沒有輸入值給這個name,那麼這個name仍是出現,只是無值。任何特殊的字符(就是那些不是簡單的七位ASCII,如漢字)將以百分符%用十六進制編碼,固然也包括象 =,&;,和 % 這些特殊的字符。其實url編碼就是一個字符ascii碼的十六進制。


js提供的url編碼和解碼

encodeURIComponent編碼與decodeURIComponent 解碼

encodeURI與decodeURIL

encodeURI()與encodeURIComponent()區別

二者的區別在於,encodeURI函數不會對如下的字符進行處理: 「! @ # $ & * ( ) = : / ; ? + ' 」

推薦使用encodeURIComponent()

f]默認狀況下ajax,瀏覽器會對url進行編碼

案例:

<script type="text/javascript">

var urlStr = 'LoginServlet?username=張三丰&password=123';

//1.對字符串進行url編碼,會對一些特殊字符串,好比中文,:,&,?號進行編碼

var u1 = encodeURIComponent(urlStr);

var u2 = encodeURI(urlStr)

console.log(u1);

console.log(u2);

//2.對url進行解碼,還原原始模樣

console.log(decodeURIComponent(u1));

console.log(decodeURIComponent(u2));

</script>



對前面get請求進行url編碼



6 ajax的兼容性問題

var request;

if (window.XMLHttpRequest)

{

//  IE7+, Firefox, Chrome, Opera, Safari瀏覽器執行代碼

request=new XMLHttpRequest();

}

else

{

// IE6, IE5瀏覽器執行代碼

request=new ActiveXObject("Microsoft.XMLHTTP");

}


7. 總結

工做中使用ajax是用於發送get/post的網絡異步請求,工做中用的更多的是jquery封裝好的get/post請求。

相關文章
相關標籤/搜索