jQuery學(xué)習(xí)筆記之Ajax用法實例詳解
本文實例講述了jQuery學(xué)習(xí)筆記之Ajax用法。分享給大家供大家參考,具體如下:
一、Ajax請求
1、jQuery.ajax(options)
通過 HTTP 請求加載遠程數(shù)據(jù)。jQuery 底層 AJAX 實現(xiàn)。簡單易用的高層實現(xiàn)見 .get,.post 等。
.ajax()返回其創(chuàng)建的XMLHttpRequest對象。大多數(shù)情況下你無需直接操作該對象,但特殊情況下可用于手動終止請求。.ajax() 只有一個參數(shù):參數(shù) key/value 對象,包含各配置及回調(diào)函數(shù)信息。詳細參數(shù)選項見下。
注意: 如果你指定了 dataType 選項,請確保服務(wù)器返回正確的 MIME 信息,(如 xml 返回 "text/xml")。錯誤的 MIME 類型可能導(dǎo)致不可預(yù)知的錯誤。
注意:如果dataType設(shè)置為"script",那么在遠程請求時(不在同一個域下),所有POST請求都將轉(zhuǎn)為GET請求。(因為將使用DOM的script標簽來加載)
jQuery 1.2 中,您可以跨域加載 JSON 數(shù)據(jù),使用時需將數(shù)據(jù)類型設(shè)置為 JSONP。使用 JSONP 形式調(diào)用函數(shù)時,如 "myurl?callback=?" jQuery 將自動替換 ? 為正確的函數(shù)名,以執(zhí)行回調(diào)函數(shù)。數(shù)據(jù)類型設(shè)置為 "jsonp" 時,jQuery 將自動調(diào)用回調(diào)函數(shù)。
返回值 XMLHttpRequest
參數(shù)
options (可選) : AJAX 請求設(shè)置。所有選項都是可選的。
選項
(1)、async (Boolean) : (默認: true)
默認設(shè)置下,所有請求均為異步請求。如果需要發(fā)送同步請求,請將此選項設(shè)置為 false。注意,同步請求將鎖住瀏覽器,用戶其它操作必須等待請求完成才可以執(zhí)行。
(2)beforeSend (Function) : 發(fā)送請求前可修改 XMLHttpRequest 對象的函數(shù),如添加自定義 HTTP 頭。
XMLHttpRequest 對象是唯一的參數(shù)。這是一個 Ajax 事件。如果返回false可以取消本次ajax請求。
function (XMLHttpRequest) {
this; // 調(diào)用本次AJAX請求時傳遞的options參數(shù)
}
(3)、cache (Boolean) : (默認: true,dataType為script時默認為false)
jQuery 1.2 新功能,設(shè)置為 false 將不會從瀏覽器緩存中加載請求信息。
(4)、complete (Function) : 請求完成后回調(diào)函數(shù) (請求成功或失敗時均調(diào)用)。
參數(shù): XMLHttpRequest 對象和一個描述成功請求類型的字符串。 這是一個 Ajax 事件
function (XMLHttpRequest, textStatus) {
this; // 調(diào)用本次AJAX請求時傳遞的options參數(shù)
}
(5)、contentType (String) : (默認: "application/x-www-form-urlencoded") 發(fā)送信息至服務(wù)器時內(nèi)容編碼類型。默認值適合大多數(shù)應(yīng)用場合。
(6)、data (Object,String) : 發(fā)送到服務(wù)器的數(shù)據(jù)。將自動轉(zhuǎn)換為請求字符串格式。GET 請求中將附加在URL 后。查看processData選項說明以禁止此自動轉(zhuǎn)換。
必須為 Key/Value 格式。如果為數(shù)組,jQuery 將自動為不同值對應(yīng)同一個名稱。如 {foo:["bar1", "bar2"]} 轉(zhuǎn)換為 '&foo=bar1&foo=bar2'。
(7)、dataFilter (Function) :給Ajax返回的原始數(shù)據(jù)的進行預(yù)處理的函數(shù)。提供data和type兩個參數(shù):data是Ajax返回的原始數(shù)據(jù),type是調(diào)用jQuery.ajax時提供的dataType參數(shù)。函數(shù)返回的值將由jQuery進一步處理。
function (data, type) {
// 對Ajax返回的原始數(shù)據(jù)進行預(yù)處理
return data // 返回處理后的數(shù)據(jù)
}
(8)、dataType (String) : (默認值:智能判斷xml或者html)
預(yù)期服務(wù)器返回的數(shù)據(jù)類型。如果不指定,jQuery 將自動根據(jù) HTTP 包 MIME 信息返回responseXML 或 responseText,并作為回調(diào)函數(shù)參數(shù)傳遞,可用值:
"xml": 返回 XML 文檔,可用 jQuery 處理。
"html": 返回純文本 HTML 信息;包含的script標簽會在插入dom時執(zhí)行。
"script": 返回純文本 JavaScript 代碼。不會自動緩存結(jié)果。除非設(shè)置了"cache"參數(shù)。注意:在遠程請求時(不在同一個域下),所有POST請求都將轉(zhuǎn)為GET請求。(因為將使用DOM的script標簽來加載)
"json": 返回 JSON 數(shù)據(jù) 。
"jsonp": JSONP 格式。使用 JSONP 形式調(diào)用函數(shù)時,如 "myurl?callback=?" jQuery 將自動替換 ? 為正確的函數(shù)名,以執(zhí)行回調(diào)函數(shù)。
"text": 返回純文本字符串
(9)、error (Function) : (默認: 自動判斷 (xml 或 html)) 請求失敗時調(diào)用時間。參數(shù)有以下三個:XMLHttpRequest 對象、錯誤信息、(可選)捕獲的錯誤對象。如果發(fā)生了錯誤,錯誤信息(第二個參數(shù))除了得到null之外,還可能是"timeout", "error", "notmodified" 和 "parsererror"。Ajax 事件。
function (XMLHttpRequest, textStatus, errorThrown) {
// 通常 textStatus 和 errorThrown 之中
// 只有一個會包含信息
this; // 調(diào)用本次AJAX請求時傳遞的options參數(shù)
}
(10)、global (Boolean) : (默認: true) 是否觸發(fā)全局 AJAX 事件。設(shè)置為 false 將不會觸發(fā)全局 AJAX 事件,如 ajaxStart 或 ajaxStop 可用于控制不同的 Ajax 事件。
(11)、ifModified (Boolean) : (默認: false) 僅在服務(wù)器數(shù)據(jù)改變時獲取新數(shù)據(jù)。使用 HTTP 包 Last-Modified 頭信息判斷。
(12)、jsonp (String) : 在一個jsonp請求中重寫回調(diào)函數(shù)的名字。這個值用來替代在"callback=?"這種GET或POST請求中URL參數(shù)里的"callback"部分,比如{jsonp:'onJsonPLoad'}會導(dǎo)致將"onJsonPLoad=?"傳給服務(wù)器。
(13)、password (String) : 用于響應(yīng)HTTP訪問認證請求的密碼
(14)、processData (Boolean) : (默認: true) 默認情況下,發(fā)送的數(shù)據(jù)將被轉(zhuǎn)換為對象(技術(shù)上講并非字符串) 以配合默認內(nèi)容類型 "application/x-www-form-urlencoded"。如果要發(fā)送 DOM 樹信息或其它不希望轉(zhuǎn)換的信息,請設(shè)置為 false。
(15)、scriptCharset (String) : 只有當(dāng)請求時dataType為"jsonp"或"script",并且type是"GET"才會用于強制修改charset。通常在本地和遠程的內(nèi)容編碼不同時使用。
(16)、success (Function) : 請求成功后的回調(diào)函數(shù)。參數(shù):由服務(wù)器返回,并根據(jù)dataType參數(shù)進行處理后的數(shù)據(jù);描述狀態(tài)的字符串。 Ajax 事件。
function (data, textStatus) {
// data 可能是 xmlDoc, jsonObj, html, text, 等等
this; // 調(diào)用本次AJAX請求時傳遞的options參數(shù)
}
(17)、timeout (Number) : 設(shè)置請求超時時間(毫秒)。此設(shè)置將覆蓋全局設(shè)置。
(18)、type (String) : (默認: "GET") 請求方式 ("POST" 或 "GET"), 默認為 "GET"。注意:其它 HTTP 請求方法,如 PUT 和 DELETE 也可以使用,但僅部分瀏覽器支持。
(19)、url (String) : (默認: 當(dāng)前頁地址) 發(fā)送請求的地址。
(20)、username (String) : 用于響應(yīng)HTTP訪問認證請求的用戶名
(21)、xhr (Function) : 需要返回一個XMLHttpRequest 對象。默認在IE下是ActiveXObject 而其他情況下是XMLHttpRequest 。用于重寫或者提供一個增強的XMLHttpRequest 對象。這個參數(shù)在jQuery 1.3以前不可用。
ps:上述紅色標出的部分是大多數(shù)ajax調(diào)用常用的參數(shù)設(shè)置,利用這幾個參數(shù)就可以成功實現(xiàn)ajax調(diào)用了.
示例
//jQTest.js
function jqAjaxTest() {
var jqRequestUrl = "AjaxHandler.ashx";
//1、 加載并執(zhí)行一個 JS 文件
$.ajax({
type: "GET",
url: "js/jqLoadJs.js",
dataType: "script"
});
//2、裝載一個 HTML 網(wǎng)頁最新版本
$.ajax({
url: "test.htm",
cache: false, //沒有緩存的說
success: function(html) {
//alert(html);
$("#spanGetHtml").css("display", "block");
$("#spanGetHtml").css("color", "red");
$("#spanGetHtml").append(html);
}
});
//3、獲取并解析一個xml文件(從服務(wù)端獲取xml)
$.ajax({
type: 'GET',
dataType: 'xml', //這里可以不寫,但千萬別寫text或者html
url: jqRequestUrl + "?action=jquerGetXmlRequest",
success: function(xml) {
//正確解析服務(wù)端的xml文件
$(xml).find("profile").each(function(i) {
var name = $(this).children("userName").text(); //取對象文本
var location = $(this).children("location").text();
alert("Xml at SERVER is gotten by CLIENT:" + name + " is living in " + location);
});
},
error: function(xml) {
alert('An error happend while loading XML document ');
}
});
//4、發(fā)送 XML 數(shù)據(jù)至服務(wù)器(客戶端發(fā)送xml到服務(wù)端)
var xmlDocument = "<profile>" +
" <userName>jeff wong</userName>" +
" <location>beijing</location>" +
"</profile>";
$.ajax({
url: jqRequestUrl + "?action=jqueryXmlRequest",
processData: false, //設(shè)置 processData 選項為 false,防止自動轉(zhuǎn)換數(shù)據(jù)格式。
//type: "xml",
cache: false,
type: "xml",
data: xmlDocument,
success: function(html) {
alert(html); //彈出提示
$("#spanResult").css("display", "block");
$("#spanResult").css("color", "red");
$("#spanResult").html(html); //給當(dāng)前dom的一個span元素賦值
},
error: function(oXmlHttpReq, textStatus, errorThrown) {
alert("jquery ajax xml request failed");
$("#spanResult").css("display", "block");
$("#spanResult").css("color", "red");
$("#spanResult").html("jquery ajax xml request failed"); //提示出錯
}
});
//5、同步加載數(shù)據(jù)。發(fā)送請求時鎖住瀏覽器。需要鎖定用戶交互操作時使用同步方式。
var html = $.ajax({
//沒有type 默認為GET方式
url: jqRequestUrl + "?action=syncRequest",
async: false
}).responseText;
alert(html);
//6、顯式get測試
$.ajax({
type: "GET",
url: jqRequestUrl + "?action=jquery&userName=" + $("#txtUserName").val(),
cache: false,
success: function(html) {
// alert(html); //彈出提示
$("#spanResult").css("display", "block");
$("#spanResult").css("color", "red");
$("#spanResult").html(html); //給當(dāng)前dom的一個span元素賦值
},
error: function(oXmlHttpReq, textStatus, errorThrown) {
alert("jquery ajax request failed");
$("#spanResult").css("display", "block");
$("#spanResult").css("color", "red");
$("#spanResult").html("jquery ajax request failed"); //提示出錯
}
});
//7、顯式POST測試
$.ajax({
type: "POST",
url: jqRequestUrl,
data: "action=jquerySaveData&userName=jeffwong&location=beijing",
success: function(html) {
alert(html);
}
});
}
幾個相關(guān)文件:
a、處理ajax請求的服務(wù)端文件:AjaxHandler.ashx,對應(yīng)的cs文件:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.SessionState;
using System.Xml;
namespace MyJqTest
{
public class AjaxHandler : IHttpHandler, IRequiresSessionState
{
/// <summary>
/// 可復(fù)用
/// </summary>
public bool IsReusable
{
get
{
return true;
}
}
public void ProcessRequest(HttpContext context)
{
AjaxOperations(context);
}
private void AjaxOperations(HttpContext context)
{
string action = context.Request["action"];
if (!string.IsNullOrEmpty(action))
{
switch (action)
{
default:
break;
case "jquery":
ProcessJQueryRequest(context);
break;
case "jquerySaveData":
ProcessJQuerySaveData(context);
break;
case "syncRequest":
ProcessJQuerySyncRequest(context);
break;
case "jqueryXmlRequest":
ProcessJQueryXMLRequest(context);
break;
case "jquerGetXmlRequest":
ProcessJQueryGetXMLRequest(context);
break;
}
}
}
private void ProcessJQueryRequest(HttpContext context)
{
context.Response.ClearContent();
context.Response.ContentType = "text/plain"; //設(shè)置輸出流類型
context.Response.Cache.SetCacheability(HttpCacheability.NoCache); //沒有緩存
string result = context.Request["userName"].Trim();
context.Response.Write("You have entered a name:" + result);
}
private void ProcessJQuerySaveData(HttpContext context)
{
context.Response.ClearContent();
context.Response.ContentType = "text/plain"; //設(shè)置輸出流類型
context.Response.Cache.SetCacheability(HttpCacheability.NoCache); //沒有緩存
string name = context.Request["userName"].Trim();
string location = context.Request["location"].Trim();
context.Response.Write("Your data have been saved:your name is " + name + ",living in " + location);
}
private void ProcessJQuerySyncRequest(HttpContext context)
{
context.Response.ClearContent();
context.Response.ContentType = "text/plain"; //設(shè)置輸出流類型
context.Response.Cache.SetCacheability(HttpCacheability.NoCache); //沒有緩存
context.Response.Write("Your sync ajax request has been processed.");
}
/// <summary>
/// 簡單的xml請求處理(服務(wù)端從客戶端獲取xml)
/// </summary>
/// <param name="context"></param>
private void ProcessJQueryXMLRequest(HttpContext context)
{
context.Response.ClearContent();
context.Response.Cache.SetCacheability(HttpCacheability.NoCache); //沒有緩存
XmlDocument doc = new XmlDocument();
try
{
doc.Load(context.Request.InputStream); //獲取xml (這里需要注意接受xml數(shù)據(jù)的方法)
context.Response.ContentType = "text/plain"; //設(shè)置輸出流類型
string name = doc.SelectSingleNode("profile/userName").InnerText;
string location = doc.SelectSingleNode("profile/location").InnerText;
context.Response.Write("Your XML data have received,and your name is " + name + ",living in " + location);
}
catch (Exception ex)
{
context.Response.Write("Get xml data failed.");
throw ex;
}
}
/// <summary>
/// 返回簡單的xml(服務(wù)端返回客戶端xml)
/// </summary>
/// <param name="context"></param>
private void ProcessJQueryGetXMLRequest(HttpContext context)
{
context.Response.ClearContent();
context.Response.Cache.SetCacheability(HttpCacheability.NoCache); //沒有緩存
XmlDocument doc = new XmlDocument();
try
{
doc.Load(context.Server.MapPath("/jeffWong.xml"));
context.Response.ContentType = "text/xml;charset=UTF-8"; //設(shè)置輸出流類型
context.Response.Write(doc.OuterXml);
}
catch (Exception ex)
{
context.Response.Write("Load xml data failed.");
throw ex;
}
}
}
}
b、aspx,html和xml文件(直接放在根目錄下)
aspx文件是ajax請求頁面:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="JQuery.aspx.cs" Inherits="MyJqTest.JQuery" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="js/jquery-1.3.1.js" type="text/javascript"></script>
</head>
<body>
<form id="form1" runat="server">
<div>
<span style="display: none" id="spanGetHtml"></span>
<br />
Please input a name:<input id="txtUserName" type="text" /><input id="btnJQAjax" type="button"
value="jQuery ajax 請求" onclick="jqAjaxTest()" />
<span style="display: none" id="spanResult"></span>
</div>
<script src="js/jQTest.js" type="text/javascript"></script>
</form>
</body>
</html>
html很簡單:
test.htm:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title></title> </head> <body> <div>it is a simple ajax test</div> </body> </html>
xml文件:
jeffWong.xml:
<?xml version="1.0" encoding="utf-8" ?> <profile> <userName>jeff wong</userName> <location>beijing</location> </profile>
c、js文件(放在根目錄js文件夾下)
jqLoadJs.js 測試ajax加載js文件用
2、load(url,[data],[callback])
載入遠程 HTML 文件代碼并插入至 DOM 中。
默認使用 GET 方式 - 傳遞附加參數(shù)時自動轉(zhuǎn)換為 POST 方式。jQuery 1.2 中,可以指定選擇符,來篩選載入的 HTML 文檔,DOM 中將僅插入篩選出的 HTML 代碼。語法形如 "url #some > selector"。請查看示例。
返回值 jQuery
參數(shù)
url (String) : 待裝入 HTML 網(wǎng)頁網(wǎng)址。
data (Map,String) : (可選) 發(fā)送至服務(wù)器的 key/value 數(shù)據(jù)。在jQuery 1.3中也可以接受一個字符串了。
callback (Callback) : (可選) 載入成功時回調(diào)函數(shù)。
示例:
function jqAjaxTest() {
$("#spanResult").load("test.htm");
$("#spanResult").css("display", "block");
$("#spanResult").css("color", "red");
}
3、jQuery.get(url,[data],[callback],[type])
通過遠程 HTTP GET 請求載入信息。
這是一個簡單的 GET 請求功能以取代復(fù)雜 .ajax。請求成功時可調(diào)用回調(diào)函數(shù)。如果需要在出錯時執(zhí)行函數(shù),請使用.ajax。
返回值 XMLHttpRequest
參數(shù)
url (String) : 待載入頁面的URL地址
data (Map) : (可選) 待發(fā)送 Key/value 參數(shù)。
callback (Function) : (可選) 載入成功時回調(diào)函數(shù)。
type (String) : (可選) 返回內(nèi)容格式,xml, html, script, json, text, _default。
示例
function jqAjaxTest() {
var jqRequestUrl = "AjaxHandler.ashx";
$.get(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqGetNormalCallBack, 'text'); //返回數(shù)據(jù)類型
}
function jqGetNormalCallBack(oData) {
$("#spanResult").html(oData);//這里直接json數(shù)據(jù)綁定了,下一個jquery方法會有處理
$("#spanResult").css("display", "block");
$("#spanResult").css("color", "red");
}
AjaxHandler.ashx代碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.SessionState;
using System.Xml;
namespace MyJQTest
{
public class AjaxHandler : IHttpHandler, IRequiresSessionState
{
/// <summary>
/// 可復(fù)用
/// </summary>
public bool IsReusable
{
get
{
return true;
}
}
public void ProcessRequest(HttpContext context)
{
AjaxOperations(context);
}
private void AjaxOperations(HttpContext context)
{
string action = context.Request["action"];
if (!string.IsNullOrEmpty(action))
{
switch (action)
{
default:
break;
case "jquery":
ProcessJQueryRequest(context);
break;
}
}
}
private void ProcessJQueryRequest(HttpContext context)
{
context.Response.ClearContent();
context.Response.ContentType = "text/plain"; //設(shè)置輸出流類型
context.Response.Cache.SetCacheability(HttpCacheability.NoCache); //沒有緩存
string userName = context.Request["userName"].Trim();
string location = context.Request["location"].Trim();
string jsonObject = "{\"userName\":\"" + userName + "\",\"location\":\"" + location + "\"}";
context.Response.Write(jsonObject);
}
}
}
ps:本例中,我們返回的是一段json類型的數(shù)據(jù),在客戶端沒有對json類型數(shù)據(jù)進行處理,在下一個方法(jQuery.getJSON)中會改進處理的。
4、jQuery.getJSON(url,[data],[callback])
通過 HTTP GET 請求載入 JSON 數(shù)據(jù)。
在 jQuery 1.2 中,您可以通過使用JSONP 形式的回調(diào)函數(shù)來加載其他網(wǎng)域的JSON數(shù)據(jù),如 "myurl?callback=?"。jQuery 將自動替換 ? 為正確的函數(shù)名,以執(zhí)行回調(diào)函數(shù)。
注意:此行以后的代碼將在這個回調(diào)函數(shù)執(zhí)行前執(zhí)行。
返回值 XMLHttpRequest
參數(shù)
url (String) : 發(fā)送請求地址。
data (Map) : (可選) 待發(fā)送 Key/value 參數(shù)。
callback (Function) : (可選) 載入成功時回調(diào)函數(shù)。
示例
function jqAjaxTest() {
var jqRequestUrl = "AjaxHandler.ashx";
//getJSON方法調(diào)用
$.getJSON(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqGetJsonCallBack); //返回json數(shù)據(jù)類型
}
//對json數(shù)據(jù)進行處理 (oData是json類型的數(shù)據(jù))
function jqGetJsonCallBack(oData) {
var oJsonStr = "";
//取json中的數(shù)據(jù),并呈現(xiàn)
oJsonStr += "userName:" + oData.userName + " location:" + oData.location + "<br/>";
//在div中顯示所有數(shù)據(jù)
$("#divResult").html(oJsonStr);
$("#divResult").css("display", "block");
$("#divResult").css("color", "red");
}
5、jQuery.getScript(url,[callback])
通過 HTTP GET 請求載入并執(zhí)行一個 JavaScript 文件。
jQuery 1.2 版本之前,getScript 只能調(diào)用同域 JS 文件。 1.2中,您可以跨域調(diào)用 JavaScript 文件。注意:Safari 2 或更早的版本不能在全局作用域中同步執(zhí)行腳本。如果通過 getScript 加入腳本,請加入延時函數(shù)。
返回值 XMLHttpRequest
參數(shù)
url (String) : 待載入 JS 文件地址。
callback (Function) : (可選) 成功載入后回調(diào)函數(shù)。
示例
function jqAjaxTest() {
var jsUrl = "js/jqLoadJs.js";
//getScript方法調(diào)用
$.getScript(jsUrl, jqGetJsCallBack);
}
//oData返回的是整個js路徑下js文件內(nèi)容
function jqGetJsCallBack(oData) {
alert(oData);
}
6、jQuery.post(url,[data],[callback],[type])
通過遠程 HTTP POST 請求載入信息。
這是一個簡單的 POST 請求功能以取代復(fù)雜 .ajax。請求成功時可調(diào)用回調(diào)函數(shù)。如果需要在出錯時執(zhí)行函數(shù),請使用.ajax。
返回值 XMLHttpRequest
參數(shù)
url (String) : 發(fā)送請求地址。
data (Map) : (可選) 待發(fā)送 Key/value 參數(shù)。
callback (Function) : (可選) 發(fā)送成功時回調(diào)函數(shù)。
type (String) : (可選) 返回內(nèi)容格式,xml, html, script, json, text, _default。
示例
function jqAjaxTest() {
var jqRequestUrl = "AjaxHandler.ashx";
$.post(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqPostCallBack, "text"); //返回text數(shù)據(jù)類型
}
function jqPostCallBack(oData) {
//在div中顯示所有數(shù)據(jù)
$("#divResult").html(oData);
$("#divResult").css("display", "block");
$("#divResult").css("color", "red");
}
二、Ajax事件
1、ajaxComplete(callback)
AJAX 請求完成時執(zhí)行函數(shù)。Ajax 事件。
XMLHttpRequest 對象和設(shè)置作為參數(shù)傳遞給回調(diào)函數(shù)。
返回值 jQuery
參數(shù)
callback (Function) : 待執(zhí)行函數(shù)
示例
function jqAjaxTest() {
var jqRequestUrl = "AjaxHandler.ashx";
$.post(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqPostCallBack, "text"); //返回text數(shù)據(jù)類型
//AJAX 請求完成時執(zhí)行函數(shù)
$("#divResult").ajaxComplete(function(event, request, settings) {
$(this).append("<br/>請求完成.");
});
}
function jqPostCallBack(oData) {
//在div中顯示所有數(shù)據(jù)
$("#divResult").html(oData);
$("#divResult").css("display", "block");
$("#divResult").css("color", "red");
}
2、ajaxError(callback)
AJAX 請求發(fā)生錯誤時執(zhí)行函數(shù)。Ajax 事件。
XMLHttpRequest 對象和設(shè)置作為參數(shù)傳遞給回調(diào)函數(shù)。捕捉到的錯誤可作為最后一個參數(shù)傳遞。
返回值 jQuery
參數(shù)
callback (Function) : 待執(zhí)行函數(shù)
function (event, XMLHttpRequest, ajaxOptions, thrownError) {
// thrownError 只有當(dāng)異常發(fā)生時才會被傳遞
this; // 監(jiān)聽的 dom 元素
}
示例
function jqAjaxTest() {
var jqRequestUrl = "AjaxHandlers.ashx"; //正確的文件名 AjaxHandler.ashx 這里故意寫錯 引發(fā)ajaxError事件
$.post(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqPostCallBack, "text");
}
//AJAX 請求發(fā)生錯誤時執(zhí)行函數(shù) (這一段放在jqAjaxTest函數(shù)內(nèi)也可以)
$("#divResult").ajaxError(function(event, request, settings) {
$("#divResult").css("display", "block");
$("#divResult").css("color", "red");
$(this).append("<br/>出錯頁面:" + settings.url);
});
function jqPostCallBack(oData) {
//在div中顯示所有數(shù)據(jù)
$("#divResult").html(oData);
$("#divResult").css("display", "block");
$("#divResult").css("color", "red");
}
3、ajaxSend(callback)
AJAX 請求發(fā)送前執(zhí)行函數(shù)。Ajax 事件。
XMLHttpRequest 對象和設(shè)置作為參數(shù)傳遞給回調(diào)函數(shù)。
返回值 jQuery
參數(shù)
callback (Function) : 待執(zhí)行函數(shù)
示例
function jqAjaxTest() {
var jqRequestUrl = "AjaxHandler.ashx";
$.post(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqPostCallBack, "text");
}
//AJAX 請求發(fā)送前執(zhí)行函數(shù)
$("#divResult").ajaxSend(function(evt, request, settings) {
$("#divResult").css("display", "block");
$("#divResult").css("color", "red");
$(this).append("<br/>開始請求: " + settings.url + "<br/>");
});
function jqPostCallBack(oData) {
//在div中顯示所有數(shù)據(jù)
$("#divResult").append(oData);
$("#divResult").css("display", "block");
$("#divResult").css("color", "red");
}
4、ajaxStart(callback)
AJAX 請求開始時執(zhí)行函數(shù)。Ajax 事件。
返回值 jQuery
參數(shù)
callback (Function) : 待執(zhí)行函數(shù)
示例
function jqAjaxTest() {
var jqRequestUrl = "AjaxHandler.ashx";
$.post(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqPostCallBack, "text");
}
//AJAX 請求開始時執(zhí)行函數(shù)
$("#divResult").ajaxStart(function() {
$("#divResult").css("display", "block");
$("#divResult").css("color", "red");
$(this).append("<br/>請求開始了<br/>");
});
function jqPostCallBack(oData) {
//在div中顯示所有數(shù)據(jù)
$("#divResult").append(oData);
$("#divResult").css("display", "block");
$("#divResult").css("color", "red");
}
5、ajaxStop(callback)
AJAX 請求結(jié)束時執(zhí)行函數(shù)。Ajax 事件。
返回值 jQuery
參數(shù)
callback (Function) : 待執(zhí)行函數(shù)
示例
function jqAjaxTest() {
var jqRequestUrl = "AjaxHandler.ashx";
$.post(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqPostCallBack, "text");
}
//AJAX 請求開始時執(zhí)行函數(shù)
$("#divResult").ajaxStop(function() {
$(this).append("<br/>請求已經(jīng)結(jié)束了<br/>");
});
function jqPostCallBack(oData) {
//在div中顯示所有數(shù)據(jù)
$("#divResult").append(oData);
$("#divResult").css("display", "block");
$("#divResult").css("color", "red");
}
6、ajaxSuccess(callback)
AJAX 請求成功時執(zhí)行函數(shù)。Ajax 事件。
XMLHttpRequest 對象和設(shè)置作為參數(shù)傳遞給回調(diào)函數(shù)。
返回值 jQuery
參數(shù)
callback (Function) : 待執(zhí)行函數(shù)
示例
function jqAjaxTest() {
var jqRequestUrl = "AjaxHandler.ashx";
$.post(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqPostCallBack, "text");
}
//AJAX 請求成功時執(zhí)行函數(shù)
$("#divResult").ajaxSuccess(function(evt, request, settings) {
$(this).append("<br/>請求成功<br/>");
$(this).append(settings.url);
});
function jqPostCallBack(oData) {
//在div中顯示所有數(shù)據(jù)
$("#divResult").append(oData);
$("#divResult").css("display", "block");
$("#divResult").css("color", "red");
}
三、其他
1、jQuery.ajaxSetup(options)
設(shè)置全局 AJAX 默認選項。
參數(shù)見 '$.ajax' 說明。
返回值 jQuery
參數(shù)
options (可選) : 選項設(shè)置。所有設(shè)置項均為可選設(shè)置。
示例
//設(shè)置 AJAX 請求默認地址為 "AjaxHandler.ashx",禁止觸發(fā)全局 AJAX 事件,用 POST 代替默認 GET 方法。其后的 AJAX 請求不再設(shè)置任何選項參數(shù)。
$.ajaxSetup({
url: "AjaxHandler.ashx",
global: false,
type: "POST"
});
2、serialize()
序列化表單內(nèi)容為字符串。
返回值 jQuery
參數(shù)
序列化表單內(nèi)容為字符串,用于 Ajax 請求。
示例
$(document).ready(function() {
var oSerializedStr = $("form").serialize(); //序列化表單內(nèi)容為字符串
$("#results").append("<tt>" + oSerializedStr + "</tt>");
});
文檔片段:
<body>
<p id="results">
<b>Results: </b>
</p>
<form>
<select name="single">
<option>Single</option>
<option>Single2</option>
</select>
<select name="multiple" multiple="multiple">
<option selected="selected">Multiple</option>
<option>Multiple2</option>
<option selected="selected">Multiple3</option>
</select><br />
<input type="checkbox" name="check" value="check1" />
check1
<input type="checkbox" name="check" value="check2" checked="checked" />
check2
<input type="radio" name="radio" value="radio1" checked="checked" />
radio1
<input type="radio" name="radio" value="radio2" />
radio2
</form>
<script src="js/jQTest.js" type="text/javascript"></script>
</body>
3、serializeArray()
序列化表單內(nèi)容,返回 JSON 數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)。
返回值 jQuery
參數(shù)
序列化表單內(nèi)容為JSON ,用于 Ajax 請求。
示例
$(document).ready(function() {
var fields = $("select, :radio").serializeArray(); //序列化表單select和raido為json
jQuery.each(fields, function(i, field) {
$("#results").append(field.value + " ");
});
});
好了,關(guān)于jQuery的ajax就介紹到這里,筆者的每個示例都測試通過了。jQuery封裝好的ajax函數(shù)用起來確實方便,有了這樣的“神兵利器”,以后寫ajax的應(yīng)用程序肯定會更加得心應(yīng)手。
希望本文所述對大家jQuery程序設(shè)計有所幫助。
相關(guān)文章
JQuery為textarea添加maxlength屬性并且兼容IE
textarea默認不支持maxlength屬性,JQuery為textarea添加maxlength,并且兼容IE,具體實現(xiàn)祥看本文,希望可以幫助到你2013-04-04
jQuery.fn和jQuery.prototype區(qū)別介紹
jQuery.fn和jQuery.prototype想必大家對它并不陌生吧,那么你們知道它們之間的區(qū)別嗎?在本文有個不錯的示例大家可以參考下2013-10-10
jquery獲取所有選中的checkbox實現(xiàn)代碼
下面小編就為大家?guī)硪黄猨query獲取所有選中的checkbox實現(xiàn)代碼。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-05-05

