jQuery學(xué)習(xí)筆記之 Ajax操作篇(三) - 過程處理
觀察函數(shù)
ajaxStart 和 ajaxStop 函數(shù)可以用來作為觀察函數(shù),我們可以使用觀察函數(shù)的回調(diào)函數(shù)來做相應(yīng)的處理。
當(dāng) Ajax 請(qǐng)求開始且尚未進(jìn)行其他傳輸時(shí),會(huì)觸發(fā) ajaxStart 的回調(diào)函數(shù)。
當(dāng)最后一次活動(dòng)請(qǐng)求終止時(shí),則會(huì)執(zhí)行通過 ajaxStop 注冊(cè)的回調(diào)函數(shù)。
由于觀察函數(shù)具備全局性,所以需要使用 $(document) 來調(diào)用。我們通過使用 Ajax 方法取得一個(gè)圖片的例子來測試兩個(gè)函數(shù):
當(dāng)前頁面為:
<div></div> <button>load</button>
同目錄下的 test.html 內(nèi)容為:
<img src="avatar.jpg" />
點(diǎn)擊按鈕后希望載入圖像:
$('button').click(function() { $('div').load('test.html'); });
此時(shí)我們可以使用 ajaxStart 和 ajaxStop 函數(shù)來增加提示:
$(document).ajaxStart(function() {// alert('load a picture'); }).ajaxStop(function() { alert('show a picture'); }); $('button').click(function() { $('div').load('test.html'); });
此時(shí)點(diǎn)擊按鈕后,再圖像載入前先提示 load a picture,載入后提示 show a picture。
錯(cuò)誤處理
最常用的方式是全局的 ajaxError 方法,以上例為例,如果我們像一個(gè)不存在的頁面發(fā)送數(shù)據(jù)請(qǐng)求:
$(document).ajaxError(function() {// alert('load failed!'); }); $('button').click(function() { $('div').load('noexsited.html'); });
此時(shí)點(diǎn)擊按鈕后:
對(duì)于非 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> 標(biāo)簽可以跨域獲取 Javascript 文件的思路,故可以跨域獲取 JSON 數(shù)據(jù)。
JSONP 的格式是把標(biāo)準(zhǔn) JSON 文件包裝在一對(duì)圓括號(hào)中,圓括號(hào)又前置一個(gè)任意字符串。這個(gè)字符串,即所謂的 P,由請(qǐng)求數(shù)據(jù)的客戶端來決定。
同樣是上例的按鈕,首先我們將外域頁面 otherdomain.com/index.php 內(nèi)容設(shè)置為:
<?php $data = '{ "name": "stephenlee", "sex": "male" }'; echo $_GET['callback'] .'('. $data .')';
我們使用特殊的占位符 ? 來實(shí)現(xiàn)跨域獲取 JSON 數(shù)據(jù):
$('button').click(function() { $.getJSON('otherdomain.com/index.php?callback=?', function(data) { console.log(data); }); });
數(shù)據(jù)獲取成功。
- 揭開AJAX神秘的面紗(AJAX個(gè)人學(xué)習(xí)筆記)
- AJax 學(xué)習(xí)筆記二(onreadystatechange的作用)
- JavaScript高級(jí)程序設(shè)計(jì) XML、Ajax 學(xué)習(xí)筆記
- jquery中ajax學(xué)習(xí)筆記一
- jquery ajax學(xué)習(xí)筆記2 使用XMLHttpRequest對(duì)象的responseXML
- jquery中ajax學(xué)習(xí)筆記3
- jquery中ajax學(xué)習(xí)筆記4
- jQuery學(xué)習(xí)筆記之 Ajax操作篇(一) - 數(shù)據(jù)加載
- jQuery學(xué)習(xí)筆記之 Ajax操作篇(二) - 數(shù)據(jù)傳遞
- Ajax學(xué)習(xí)筆記整理
相關(guān)文章
關(guān)于jQuery對(duì)象數(shù)據(jù)緩存Cache原理以及jQuery.data詳解
網(wǎng)上有很多教你怎么使用jQuery.data(..)來實(shí)現(xiàn)數(shù)據(jù)緩存,但有兩個(gè)用戶經(jīng)常使用的data([key],[value])和jQuery.data(element,[key],[value])幾乎沒有什么文章說清楚它們兩的區(qū)別,所以我用到了,研究下分享給大家。2013-04-04jquery text(),val(),html()方法區(qū)別總結(jié)
jquery text(),val(),html()方法區(qū)別總結(jié)。需要的朋友可以過來參考下,希望對(duì)大家有所幫助2013-11-11jQuery實(shí)現(xiàn)點(diǎn)擊該行即可刪除HTML表格行
本節(jié)任務(wù)是從一個(gè)HTML表使用一些時(shí)髦的效果,只要按一下該行的行。以下是實(shí)現(xiàn)這一目標(biāo)的jQuery代碼2014-10-10jQuery圖片切換插件jquery.cycle.js使用示例
Cycle供了非常好的功能來幫助大家更簡單的使用插件的幻燈功能,下面是它的一個(gè)非常不錯(cuò)的示例,大家可以學(xué)習(xí)下2014-06-06jQuery實(shí)現(xiàn)的簡單對(duì)話框拖動(dòng)功能示例
這篇文章主要介紹了jQuery實(shí)現(xiàn)的簡單對(duì)話框拖動(dòng)功能,涉及jQuery事件響應(yīng)、數(shù)值運(yùn)算及頁面元素屬性動(dòng)態(tài)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-06-06基于JQuery實(shí)現(xiàn)異步刷新的代碼(轉(zhuǎn)載)
JQuery,是輕量級(jí)的js庫,把繁瑣的js代碼封裝,使調(diào)用更簡單,完成更多功能。同樣,封裝了js利用XMLHttpRequest實(shí)現(xiàn)的異步刷新.2011-03-03當(dāng)鼠標(biāo)移動(dòng)時(shí)出現(xiàn)特效的JQuery代碼
當(dāng)鼠標(biāo)移動(dòng)時(shí)出現(xiàn)特效,在某些情況下還是比較實(shí)現(xiàn)的,下面為大家介紹下通過JQuery是如何實(shí)現(xiàn)的,具體如下,感興趣的朋友可以參考下2013-11-11在jQuery1.5中使用deferred對(duì)象 著放大鏡看Promise
在那篇經(jīng)典的關(guān)于jQuery1.5中Deferred使用方法介紹的文章中(譯文見這里),有下面一段描述2011-03-03jQuery setTimeout()函數(shù)使用方法
setTimeout在以前的js中是定時(shí)執(zhí)行一個(gè)對(duì)象或函數(shù),下面我來介紹jquery中的setTimeout函數(shù)使用方法有需要了解的朋友仔細(xì)的參考參考2013-04-04