AJAX請求 全局函數的使用


我們可以把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;
}

運行程序,結果如圖:

clip_image002

我們也證實了全局函數的執行順序。

Demo下載


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM