1. load(url, [data], [callback])
1.1 解析
載入遠端 HTML 檔案程式碼並插入至 DOM 中。
語法格式:
load(url, [data], [callback])
其中,引數
url:請求被載入的頁面URL地址。
[data]:可選項引數,傳送至伺服器的資料,key/value格式。
[callback]:可選項引數,載入成功後返回至載入頁面的回撥函式。
load()方法預設使用 GET 方式,如果有[data]引數,則會自動轉換為POST方式。
1.2 示例
示例1:load()方法載入全部請求頁面HTML程式碼
Index.cshtml:
@{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Index</title> <script type="text/javascript" src="@Url.Content("~/Scripts/jquery-2.1.4.js")"></script> <script type="text/javascript"> $(function () { $("#container").load("@Url.Action("About", "Home")"); }); </script> </head> <body> <div id="container"> </div> </body> </html>
About.cshtml:
@{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>About</title> </head> <body> <div> Index </div> <div id="about"> About </div> </body> </html>
load()方法之後,container中的HTML程式碼:
<div id="container"> <meta name="viewport" content="width=device-width"> <title>About</title> <div> Index </div> <div id="about"> About </div> </div>
載入靜態的HTML檔案:
<script type="text/javascript"> $(function () { $("#container").load("About.html"); }); </script>
示例2:load()方法載入部分請求頁面HTML程式碼
<script type="text/javascript"> $(function () { $("#container").load("@Url.Action("About", "Home") div"); }); </script>
<div id="container"> <div> Index </div> <div id="about"> About </div> </div>
<script type="text/javascript"> $(function () { $("#container").load("@Url.Action("About", "Home") #about"); }); </script>
<div id="container"> <div id="about"> About </div> </div>
載入靜態的HTML檔案部分程式碼:
<script type="text/javascript"> $(function () { $("#container").load("About.html #about"); }); </script>
示例3:data可選項引數
<script type="text/javascript"> $(function () { $("#container").load("@Url.Action("About", "Home")", { _t: new Date(), // 日期 _r: Math.random() // 隨機數 }); }); </script>
示例4: callback可選項引數
<script type="text/javascript"> $(function () { $("#container").load("@Url.Action("About", "Home")", { _t: new Date(), // 日期 _r: Math.random() // 隨機數 }, function (data) { alert(data); // data為url頁面返回的結果 }); }); </script>
2. jQuery.get(url, [data], [callback], [type])
2.1 解析
通過遠端 HTTP GET 請求載入資訊。
語法格式:
jQuery.get(url, [data], [callback], [type])
其中,引數
url:請求被載入的頁面URL地址。
[data]:可選項引數,傳送至伺服器的資料,key/value格式。
[callback]:可選項引數,載入成功後返回至載入頁面的回撥函式。
[type]:返回的內容格式,xml, html, script, json, text, _default,預設為html。
2.2 示例
<script type="text/javascript"> $(function () { $.get("@Url.Action("About", "Home")"); }); </script>
<script type="text/javascript"> $(function () { $.get("@Url.Action("About", "Home")", { _t: new Date(), // 日期 _r: Math.random() // 隨機數 }); }); </script>
<script type="text/javascript"> $(function () { $.get("@Url.Action("About", "Home")", { UserName: encodeURI($("#txtUserName").val()) }); }); </script>
<script type="text/javascript"> $(function () { $.get("@Url.Action("About", "Home")", { _t: new Date(), // 日期 _r: Math.random() // 隨機數 }, function (data) { alert(data); // data為url頁面返回的結果 }); }); </script>
<script type="text/javascript"> $(function () { $.get("@Url.Action("About", "Home")", { _t: new Date(), // 日期 _r: Math.random() // 隨機數 }, function (data) { alert(data); // data為url頁面返回的結果 }, "json"); }); </script>
引數[data]可以使用另外一種方式傳遞:
<script type="text/javascript"> $(function () { $.get("@Url.Action("About", "Home")", "_r=" + Math.random() , function (data) { alert(data._r); }, "json"); }); </script>
<script type="text/javascript"> $(function () { $.get("@Url.Action("About", "Home")", "_t=" + new Date() + "&_r=" + Math.random() , function (data) { alert(data._r); }, "json"); }); </script>
jQuery非同步載入XML文件:
@{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Index</title> <script type="text/javascript" src="@Url.Content("~/Scripts/jquery-2.1.4.js")"></script> <script type="text/javascript"> $(function () { $.get("@Url.Content("~/Content/Categories.xml")", { _r: Math.random() }, function (data) { var categories = ""; $(data).find("Category").each(function () { // 遍歷獲取的資料 var $category = $(this); categories += "分類ID:" + $category.find("CategoryID").text() + "<br />"; categories += "分類名稱:" + $category.find("CategoryName").text() + "<hr />"; }); // 顯示資料 $("#container").html(categories); }, "xml"); }); </script> </head> <body> <div id="container"> </div> </body> </html>
Categories.xml:
<?xml version="1.0" encoding="utf-8" ?> <Categories> <Category> <CategoryID>1</CategoryID> <CategoryName>書籍</CategoryName> </Category> <Category> <CategoryID>2</CategoryID> <CategoryName>數碼電子</CategoryName> </Category> <Category> <CategoryID>3</CategoryID> <CategoryName>服裝服飾</CategoryName> </Category> </Categories>
3. jQuery.getJSON(url, [data], [callback])
3.1 解析
通過 HTTP GET 請求載入 JSON 資料。
語法格式:
jQuery.getJSON(url, [data], [callback])
其中,引數
url:請求被載入的頁面URL地址。
[data]:可選項引數,傳送至伺服器的資料,key/value格式。
[callback]:可選項引數,載入成功後返回至載入頁面的回撥函式。
3.2 示例
@{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Index</title> <script type="text/javascript" src="@Url.Content("~/Scripts/jquery-2.1.4.js")"></script> <script type="text/javascript"> $(function () { $.getJSON("/Home/Categories", { _r: Math.random() }, function (data) { //alert(data.length); var categories = ""; $.each(data, function (i, item) { categories += "分類ID:" + item.CategoryID + "<br />"; categories += "分類名稱:" + item.CategoryName + "<hr />"; }); // 顯示資料 $("#container").html(categories); }); }); </script> </head> <body> <div id="container"> </div> </body> </html>
public JsonResult Categories() { List<Category> categories = new List<Category>() { new Category() { CategoryID = 1, CategoryName = "書籍" }, new Category() { CategoryID = 2, CategoryName = "數碼電子" }, new Category() { CategoryID = 3, CategoryName = "服裝服飾" } }; return Json(categories, JsonRequestBehavior.AllowGet); }
[{"CategoryID":1,"CategoryName":"書籍"},{"CategoryID":2,"CategoryName":"數碼電子"},{"CategoryID":3,"CategoryName":"服裝服飾"}]
4. jQuery.post(url, [data], [callback], [type])
4.1 解析
通過遠端 HTTP POST 請求載入資訊。
語法格式:
jQuery.post(url, [data], [callback], [type])
其中,引數
url:請求被載入的頁面URL地址。
[data]:可選項引數,傳送至伺服器的資料,key/value格式。
[callback]:可選項引數,載入成功後返回至載入頁面的回撥函式。
[type]:返回的內容格式,xml, html, script, json, text, _default,預設為html。
4.2 示例
jQuery.post(url, [data], [callback], [type])的用法與jQuery.get(url, [data], [callback], [type])相同。
<script type="text/javascript"> $(function () { $.post("@Url.Action("About", "Home")", { _t: new Date(), // 日期 _r: Math.random() // 隨機數 }); }); </script>
5. jQuery.ajax([options])
5.1 解析
通過 HTTP 請求載入遠端資料。
$.ajax()是jQuery Ajax的最底層方法,也是功能最強的方法。$.get()、$.post()、$.getJSON()等都是在$.ajax()方法基礎之上實現的。
語法格式:
jQuery.ajax([options])
其中,引數
[options]:$.ajax()方法中的請求設定,key/value格式。既包含傳送請求的引數,也包含伺服器響應後回撥的資料。
$.ajax()方法的引數列表:
引數名 | 型別 | 描述 |
---|---|---|
url | String | 傳送請求的地址(預設為當前頁面) |
type | String | 資料請求方式(get/post),預設為get。 |
data | String或Object | 傳送到伺服器端的資料。將自動轉換為請求字串格式。在GET 請求方式中將附加在 URL 後。 |
dataType | String | 伺服器返回的資料型別。如果未指定,jQuery自動根據HTTP包MIME資訊返回 responseXML 或 responseText,作為引數傳遞給回撥函式,可用型別: html:返回純文字的HTML資訊,包含的 <Script>會在插入頁面時被執行 script:返回純文字的JavaScript程式碼 text:返回純文字字串 xml:返回可被jQuery處理的XML文件 json:返回JSON格式的資料 |
beforeSend | Function |
用於傳送請求前修改XMLHttpRequest物件,其中的引數就是XMLHttpRequest物件,由於該函式本身是jQuery事件,如果函式返回false,則表示取消本次事件。
function (XMLHttpRequest) { |
complete | Function |
請求完成後呼叫的函式,該函式無論資料傳送成功或失敗都會呼叫,其中有兩個引數:XMLHttpRequest物件和textStatus用於描述成功請求型別的字串。
function (XMLHttpRequest, textStatus) {
|
success | Function |
請求成功後呼叫的回撥函式,該函式有兩個引數:根據引數dataType處理後伺服器返回的資料data和textStatus描述狀態的字串。
function (data, textStatus) {
|
error | Function |
請求失敗後呼叫的回撥函式,該函式有3個引數:XMLHttpRequest物件、出錯資訊和(可選)捕捉到的錯誤物件。 function (XMLHttpRequest, textStatus, errorThrown) { |
timeout | Number | 請求超時的時間(毫秒),可以在$.ajaxSetup()方法中設定。 |
global | Boolean | 是否響應全域性事件,預設為true,表示為響應。如果設定為false,則不響應全域性事件,全域性事件$.ajaxStart()等將不響應。 |
async | Boolean | 是否非同步請求,預設為true,表示是非同步,如果設定為false,表示同步請求。 |
cache | Boolean | 是否進行頁面快取,true表示進行快取,false表示不進行快取。 |
5.2 示例
<script type="text/javascript"> $(function () { $.ajax({ type: "GET", url: "/Home/CheckUserName", dataType: "html", data: "UserName=" + decodeURI($("#txtUserName").val()), beforeSend: function (XMLHttpRequest) { // show loading }, success: function (data, textStatus) { }, complete: function (XMLHttpRequest, textStatus) { // hide loading }, error: function (XMLHttpRequest, textStatus, errorThrown) { // XMLHttpRequest.status // XMLHttpRequest.readyState // textStatus } }); }); </script>
6. serialize()、serializeArray()及Param()
6.1 解析
serialize()序列化表單,只能對<form>標記中的帶有name屬性的元素序列化。
serialize()語法格式:
serialize()
該方法是將所選擇的DOM元素轉換成能隨AJAX傳遞的字串,即序列化所選擇的DOM元素。
serialize()後的資料格式:
UserName=Libing&Password=1
serializeArray()序列化表格元素 (類似 serialize() 方法),返回 JSON 資料結構資料,注意:此方法返回的是 JSON 物件而非 JSON 字串。serializeArray() 方法通過序列化表單值來建立物件陣列(名稱和值)。
返回的 JSON 物件是由一個物件陣列組成的,其中每個物件包含一個或兩個名值對 —— name 引數和 value 引數
[ { name: "UserName", value: "使用者名稱" }, { name: "Password", value: "密碼" }, { name: "Email" } // 值為空 ]
serializeArray()語法格式:
serializeArray()
param() 方法:序列化一個 key/value 物件。
param() 方法建立陣列或物件的序列化表示,該序列化值可在進行 AJAX 請求時在 URL 查詢字串中使用。
param() 方法用於在內部將元素值轉換為序列化的字串表示。
param()語法格式:
jQuery.param(object,traditional)
其中,引數
object:要進行序列化的陣列或物件。
traditional:規定是否使用傳統的方式淺層進行序列化(引數序列化)。
6.2 示例
<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Index</title> <script type="text/javascript" src="~/Scripts/jquery-2.1.4.js"></script> <script type="text/javascript"> $(function () { $.get("@Url.Action("About", "Home")", $("#frm").serialize() , function (data) { alert(data.UserName); }, "json"); }); </script> </head> <body> <form id="frm"> <input name="UserName" type="text" value="使用者名稱" /> <input name="Password" type="text" value="密碼" /> </form> <div id="container"> </div> </body> </html>
<script type="text/javascript"> $(function () { $.get("@Url.Action("About", "Home")", $("#frm").serializeArray() , function (data) { alert(data.UserName); }, "json"); }); </script>
var fields = $("select, :radio").serializeArray(); $.each(fields, function (i, field) { $("#results").append(field.value + " "); });
var params = { width:1900, height:1200 }; var str = jQuery.param(params); $("#results").text(str);
結果:
width=1680&height=1050
7. $.ajaxSetup()設定全域性Ajax
7.1 解析
$.ajaxSetup()用於設定全域性性的Ajax預設選項,一次設定,全域性有效。
語法格式:
$.ajaxSetup([options])
其中,引數
[options]:可選項引數是一個物件,設定$.ajax()方法中的引數。
7.2 示例
<script type="text/javascript"> $(function () { $.ajaxSetup({ type: "POST", url: "/Home/Index", dataType:"json" }); $.ajax({ success: function (data) { // show data } }); }); </script>
Ajax的其他全域性事件:
事件名稱 | 引數 | 功能描述 |
---|---|---|
ajaxComplete(callback) | callback | Ajax請求完成時執行函式 |
ajaxError(callback) | callback | Ajax請求發生錯誤時執行函式,其中捕捉到的錯誤可以作為最後一個引數進行傳遞 |
ajaxSend(callback) | callback | Ajax請求傳送前執行函式 |
ajaxStart(callback) | callback | Ajax請求開始時執行函式 |
ajaxStop(callback) | callback | Ajax請求結束時執行函式 |
ajaxSuccess(callback) | callback | Ajax請求成功時執行函式 |
ajaxStart()及ajaxStop全域性事件示例:
<script type="text/javascript"> $(function () { $("divLoading").ajaxStart(function () { $(this).html("正在處理中...").show(); }); $("divLoading").ajaxStop(function () { $(this).html("處理已完成").hide(); }); }); </script>