關於Ajax
ajax 的全稱是Asynchronous JavaScript and XML,其中,Asynchronous 是異步的意思,它有別於傳統web開發中采用的同步的方式,同步是指:發送方發出數據后,等接收方發回響應以后才發下一個數據包的通訊方式。而異步是指:發送方發出數據后,不等接收方發回響應,接着發送下個數據包的通訊方式 。
ajax的工作原理就是通過XmlHttpRequest對象來向服務器發出異步請求,從服務器中獲得數據,然后用Javascript來操作DOM從而更新局部頁面。
jquery中的ajax
自從JavaScript庫誕生之后,對JavaScript的各種方法進行了封裝,包括了ajax,相比於原生ajax而言,在封裝后的Ajax的操作更加簡潔,功能更加強大。
ajax的基本使用方法為$.ajax(),其中ajax默認是使用了get方法請求,並且默認以異步去請求資源。也可以通過$.get(url, [data], [callback], [type])或者$.post(url, [data], [callback], [type])來改變請求方式。
其中,也可以通過向方法中傳入對象,進行資源請求。
1.url
說明:發送請求的地址(默認為當前頁面),要求是String類型的參數,比如是.net下,"~wexin(控制器)/getweinxinmenu(動作)",
2.type
說明:請求方法(post或者get),默認是get,要求是String類型的參數。其他的htpp請求如(put、delete)等也支持,但是要瀏覽器支持
3.timeout
說明:設置請求超時時間(毫秒),要求是number類型的參數。此設置將覆蓋$.ajaxSetup()方法的全局設置。
4.async
說明:默認值為true,所有請求是異步,要求是Bool類型的參數,如果需要發送同步請求,將此項設置為false。注意:同步時瀏覽器會被鎖住。
5.cache
說明:默認為true(當datatype為script時,默認為false)從瀏覽器緩存中加載請求信息,要求是Bool類型的參數。
6.data
說明:發送到服務器的數據,要求是Object或string類型的參數。如果已經不是字符串,將自動轉換為字符串格式。get請求中將附加在url后。防止這種自動轉換,可以查看 processData選項。對象必須為key/value格式,例如{foo1:"bar1",foo2:"bar2"}轉換為&foo1=bar1&foo2=bar2。如果是數組,JQuery將自動為不同值對應同一個名稱。例如{foo:["bar1","bar2"]}轉換為&foo=bar1&foo=bar2。
7.dataType:
說明:預期服務器返回的數據類型,要求為String類型的參數。如果不指定,JQuery將自動根據http包mime信息返回responseXML或responseText,並作為回調函數參數傳遞。可用的類型如下:
xml:返回XML文檔,可用JQuery處理。
html:返回純文本HTML信息;包含的script標簽會在插入DOM時執行。
script:返回純文本JavaScript代碼。不會自動緩存結果。除非設置了cache參數。注意在遠程請求時(不在同一個域下),所有post請求都將轉為get請求。
json:返回JSON數據。
jsonp:JSONP格式。使用SONP形式調用函數時,例如myurl?callback=?,JQuery將自動替換后一個“?”為正確的函數名,以執行回調函數。
text:返回純文本字符串。
具體代碼
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <script type="text/javascript" src="Public/js/jquery-easyui-1.3.1/jquery-1.8.2.min.js"></script> 5 <script type="text/javascript"> 6 $(function(){ 7 //按鈕單擊時執行 8 $("#testAjax").click(function(){ 9 10 //Ajax調用處理 11 var html = $.ajax({ 12 type: "POST", 13 url: "xxx", 14 data: "name=garfield&age=18", 15 async: false 16 17 }).responseText; 18 $("#myDiv").html('<h2>'+html+'</h2>'); 19 }); 20 }); 21 </script> 22 </head> 23 <body> 24 <div id="myDiv"><h2>通過 AJAX 改變文本</h2></div> 25 <button id="testAjax" type="button">Ajax改變內容</button> 26 </body> 27 </html>