jQuery確實是一個比較不錯的輕量級的框架,底層封裝了不少代碼,可以幫助咱們快速的開發一些JS應用,同時也簡化了Ajax,dom以及json等等的操做,如今具體說說jQuery是如何執行Ajax的
php
load方法:html
load(url,data,callback) * jquery對象調用load()方法,返回內容會自動寫入jquery對象內 * url:請求路徑 * data:請求數據,以key/value形式,json數據格式 * callback:回調函數,function(data,textStatus,XMLHttpRequest){} * data:表明請求返回內容 * textStatus:表明請求狀態,其值可能爲: succuss, error, notmodify, timeout 4 種 * XMLHttpRequest對象 * load()方法的請求類型: * 若是客戶端沒有向服務器端發送請求數據,那麼請求類型就是"GET"方式 * 若是客戶端向服務器端發送請求數據,那麼請求類型就是"POST"方式 * load()方法的請求類型,是根據有沒有向服務器端發送數據決定的。 這個方法默認使用 GET 方式來傳遞的,若是[data]參數有傳遞數據進去,就會自動轉換爲POST方式的。jQuery 1.2 中,能夠指定選擇符,來篩選載入的 HTML 文檔,DOM 中將僅插入篩選出的 HTML 代碼。語法形如 "url #some > selector"
eg: <script language="JavaScript"> $("#id").click(function(){ //將數據封裝到json中 var json = { username:$("#username").val(), psw:$("#psw").val() } $("#one").load("load01.jsp",json,function(data,textStatus,XMLHttpRequest){ alert(data); }); }); </script>
2.jQuery.get(...)和 jQuery.post(...)方法:
java
get(url,data,callback,type) * url:請求路徑 * data:請求數據,以key/value形式,json數據格式 * callback:function(data,textstatus){} * data:表明返回的內容,能夠是 XML 文檔, JSON 文件, HTML 片斷等 * textstatus:表明請求狀態, 其值可能爲: succuss, error, notmodify, timeout 4 種 * type:返回內容格式,xml, html, script, json, text, _default。 * 返回值:XMLHttpRequest * get()方法不管發送不發送請求數據,請求類型都是"GET"方式
post(url,data,callback,type) * url:請求路徑 * data:請求數據,以key/value形式,json數據格式 * callback:function(data,textstatus){} * data:表明返回的內容,能夠是 XML 文檔, JSON 文件, HTML 片斷等 * textstatus:表明請求狀態, 其值可能爲: succuss, error, notmodify, timeout 4 種 * type:返回內容格式,xml, html, script, json, text, _default。 * 返回值:XMLHttpRequest * post()方法不管發送不發送請求數據,請求類型都是"POST"方式
發送請求時可進行數據封裝,因爲相似此處只舉一例
jquery
<script language="JavaScript"> $("#b1").click(function(){ //自定義的數據封裝 var json = { username:$("#username").val(), psw:$("#psw").val() } //能夠採用序列化來簡化數據封裝: //將數據封裝,接收出獲得字符串而取出 var json = $("#form1").serialize(); //*********************************************** //也可將數據封裝成JSON數據結構 //注意,此方法返回的是JSON對象而非JSON字符串。須要使用插件或者第三方庫進行字符串化操做。 var fields = $("select, :radio").serializeArray(); //*********************************************** $.get("get.jsp",json,function(data,textstatus){ alert(data); }); }); </script>
//請求的URL接收數據,取出方式: request.getParameter("username"); request.getParameter("psw"); //將數據包裝在out對象中返回: out.println("Hello World!");
3.jQuery.ajax(options)ajax
這個是jQuery 的底層 AJAX 實現。簡單易用的高層實現見 $.get, $.post 等。 $.ajax() 返回其建立的 XMLHttpRequest 對象。大多數狀況下你無需直接操做該對象,但特殊狀況下可用於手動終止請求。 注意: 若是你指定了 dataType 選項,請確保服務器返回正確的 MIME 信息,(如 xml 返回 "text/xml")。錯誤的 MIME 類型可能致使不可預知的錯誤。見 Specifying the Data Type for AJAX Requests 。 當設置 datatype 類型爲 'script' 的時候,全部的遠程(不在同一個域中)POST請求都回轉換爲GET方式。 $.ajax() 只有一個參數:參數 key/value 對象,包含各配置及回調函數信息。詳細參數選項見下。 jQuery 1.2 中,您能夠跨域加載 JSON 數據,使用時需將數據類型設置爲 JSONP。使用 JSONP 形式調用函數時,如 "myurl?callback=?" jQuery 將自動替換 ? 爲正確的函數名,以執行回調函數。數據類型設置爲 "jsonp" 時,jQuery 將自動調用回調函數。(這個我不是很懂)
jQuery.Ajax()還有衆多參數,具體能夠參考:http://www.php100.com/manual/jquery/ 這裏有幾個Ajax事件參數:beforeSend ,success ,complete ,error 。咱們能夠定義這些事件來很好的處理咱們的每一次的Ajax請求。注意一下,這些Ajax事件裏面的 this 都是指向Ajax請求的選項信息的(請參考說 get() 方法時的this的圖片)
jQuery封裝了衆多Ajax的方法, 封裝了xmlHttpRequest的建立方法,所以是Ajax變得特別簡潔json