首頁 >web前端 >js教程 >jQuery學習筆記之 Ajax操作篇(三) - 過程處理_jquery

jQuery學習筆記之 Ajax操作篇(三) - 過程處理_jquery

WBOY
WBOY原創
2016-05-16 16:43:121311瀏覽

觀察函數

ajaxStart 和 ajaxStop 函數可以用來作為觀察函數,我們可以使用觀察函數的回呼函數來做對應的處理。

當 Ajax 要求開始且尚未進行其他傳輸時,會觸發 ajaxStart 的回呼函數。
當最後一次活動請求終止時,則會執行透過 ajaxStop 註冊的回呼函數。
由於觀察函數具備全域性,所以需要使用 $(document) 來呼叫。我們透過使用 Ajax 方法取得一個圖片的例子來測試兩個函數:
目前頁為:

<div></div>
<button>load</button>

同目錄下的 test.html 內容為:

<img src="avatar.jpg" />

點選按鈕後希望載入圖片:

 $('button').click(function() {
  $('div').load('test.html');
 });

此時我們可以使用 ajaxStart 和 ajaxStop 函數來增加提示:

 $(document).ajaxStart(function() {//
  alert('load a picture');
 }).ajaxStop(function() {
  alert('show a picture');
 });
 $('button').click(function() {
  $('div').load('test.html');
 });

此時點選按鈕後,再圖片載入前先提示 load a picture,載入後提示 show a picture。

錯誤處理

最常用的方式是全域的 ajaxError 方法,以上例為例,如果我們像一個不存在的頁面發送資料請求:

 $(document).ajaxError(function() {//
  alert('load failed!');
 });
 $('button').click(function() {
  $('div').load('noexsited.html');
 });

此時點選按鈕後:

對於非 load 方法,也可以使用 fail 方法來連綴處理:

 $('button').click(function() {
  $.get('noexsited.html', function(data) {

  }).fail(function(jqXHR) {
   alert('status is ' + jqXHR.status);
  });
 });

JSONP

JSONP 即 JSON with padding,填充式 JSON,利用的是 <script> 標籤可以跨域取得 Javascript 檔案的思路,故可以跨域取得 JSON 資料。 <br /> JSONP 的格式是把標準 JSON 檔案包裝在一對圓括號中,圓括號又前置一個任意字串。這個字串,即所謂的 P,由請求資料的客戶端來決定。 <br /> 同樣是上例的按鈕,首先我們將外域頁面 otherdomain.com/index.php 內容設定為:</script>

<&#63;php
$data = '{ "name": "stephenlee", "sex": "male" }';
echo $_GET['callback'] .'('. $data .')';

我們使用特殊的佔位符 ? 來實作跨域取得 JSON 資料:

 $('button').click(function() {
  $.getJSON('otherdomain.com/index.php&#63;callback=&#63;', function(data) {
   console.log(data);
  });
 });


數據獲取成功。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn