我們可以把AJAX全局函數附加到特定的DOM元素。這些函數在AJAX請求處理的不同階段或在請求最終成功或失敗時將被觸發
AJAX全局函數的任何一個命令語法都是一致的,所以統一在下表中說明。
| ajaxStart(callback) ajaxSend(callback) ajaxSuccess(callback) ajaxError(callback) ajaxComplete(callback) ajaxStop(callback) |
|
| 把傳入的回調函數附加到所有匹配元素上,一旦到達AJAX請求處理的指定時刻就觸發回調函數。 |
|
| 參數 |
|
| callback |
(函數)將被附加的回調函數。參照下表了解何時回調函數被觸發以及什么參數將被傳遞。 |
| 返回值 |
包裝集 |
AJAX全局回調函數(按觸發順序排列)
| 全局函數類型 |
何時被觸發 |
參數 |
| ajaxStart |
在jQuery AJAX函數或命令發起時,但在XHR實例被創建之前 |
類型被設置為ajaxStart的全局回調信息對象 |
| ajaxSend |
在XHR實例被創建之后,但在XHR實例被發送給服務器之前 |
類型被設置為ajaxSend的全局回調信息對象;XHR實例;$.ajax()函數使用的屬性 |
| ajaxSuccess |
在請求已從服務器返回之后,並且響應包含成功狀態碼 |
類型被設置為ajaxSuccess的全局回調信息對象;XHR實例;$.ajax()函數使用的屬性 |
| ajaxError |
在請求已從服務器返回之后,並且響應包含失敗狀態碼 |
類型被設置為ajaxError的全局回調信息對象;XHR實例;$.ajax()函數使用的屬性;被XHR實例返回的異常對象(如果有的話) |
| ajaxComplete |
在請求已從服務器返回之后,並且在任何已聲名的ajaxSuccess或ajaxError回調函數已被調用之后 |
類型被設置為ajaxComplete的全局回調信息對象;XHR實例;$.ajax()函數使用的屬性 |
| ajaxStop |
在所有其他AJAX處理完成以及任何其他適用的全局回調函數已被調用之后 |
類型被設置為ajaxStop的全局回調信息對象 |
看個例子
客戶端代碼:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$().ready(function () {
$('#selectNum').change(function () {
var idValue = $(this).val();
$('#show').html('');
//這里可以把url地址改成一個錯誤地址如Server1.aspx測試錯誤情況?
$.post('Server1.aspx', { id: idValue }, function (data) { $('#show').html('success callback!<br/>' + data + '<br/>' + (new Date()).toLocaleTimeString() + ' ' + (new Date()).getMilliseconds())+'<br/>' })
});
$('#ajaxStart').ajaxStart(function () {
$(this).html('ajaxStart!<br/>'
+ (new Date()).toLocaleTimeString() + ' ' + (new Date()).getMilliseconds())
})
$('#ajaxSend').ajaxSend(function (o, xhr, property) {
$(this).html('ajaxSend!<br/>'
+ (new Date()).toLocaleTimeString() + ' ' + (new Date()).getMilliseconds())
})
$('#ajaxSuccess').ajaxSuccess(function (o, xhr, property) {
$(this).html('ajaxSuccess!<br/>'
+ 'status:' + xhr.status + ' status info:' + xhr.statusText + '<br/>'
+ (new Date()).toLocaleTimeString() + ' ' + (new Date()).getMilliseconds())
})
$('#ajaxError').ajaxError(function (o, xhr, property, err) {
$(this).html('ajaxError!<br/>'
+ 'status:' + xhr.status + ' status info:' + xhr.statusText + '<br/>'
+ (new Date()).toLocaleTimeString() + ' ' + (new Date()).getMilliseconds())
})
$('#ajaxComplete').ajaxComplete(function (o, xhr, property) {
$(this).html('ajaxComplete!<br/>'
+ 'status:' + xhr.status + ' status info:' + xhr.statusText + '<br/>'
+ (new Date()).toLocaleTimeString() + ' ' + (new Date()).getMilliseconds())
})
$('#ajaxStop').ajaxStop(function () {
$(this).html('ajaxStop!<br/>'
+ (new Date()).toLocaleTimeString() + ' ' + (new Date()).getMilliseconds())
})
})
</script>
</head>
<body>
<select id="selectNum">
<option value="0">--Select--</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<div id="show"></div>
<fieldset>
<legend>ajaxStart</legend>
<div id="ajaxStart"></div>
</fieldset>
<fieldset>
<legend>ajaxSend</legend>
<div id="ajaxSend"></div>
</fieldset>
<fieldset>
<legend>ajaxSuccess</legend>
<div id="ajaxSuccess"></div>
</fieldset>
<fieldset>
<legend>ajaxError</legend>
<div id="ajaxError"></div>
</fieldset>
<fieldset>
<legend>ajaxComplete</legend>
<div id="ajaxComplete"></div>
</fieldset>
<fieldset>
<legend>ajaxStop</legend>
<div id="ajaxStop"></div>
</fieldset>
</body>
</html>
服務端主要代碼:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
if (Request["id"] != null && !string.IsNullOrEmpty(Request["id"].ToString()))
{
Response.Write(GetData(Request["id"].ToString()));
}
}
}
protected string GetData(string id)
{
string str = string.Empty;
switch (id)
{
case "1":
str += "This is Number 1";
break;
case "2":
str += "This is Number 2";
break;
case "3":
str += "This is Number 3";
break;
default:
str += "Warning Other Number!";
break;
}
return str;
}
運行程序,結果如圖:
我們也證實了全局函數的執行順序。

