jQuery学习笔记之 Ajax操作篇(三) - 过程处理


Posted in Javascript onJune 23, 2014

观察函数

ajaxStart 和 ajaxStop 函数可以用来作为观察函数,我们可以使用观察函数的回调函数来做相应的处理。

当 Ajax 请求开始且尚未进行其他传输时,会触发 ajaxStart 的回调函数。
当最后一次活动请求终止时,则会执行通过 ajaxStop 注册的回调函数。
由于观察函数具备全局性,所以需要使用 $(document) 来调用。我们通过使用 Ajax 方法取得一个图片的例子来测试两个函数:
当前页面为:

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

jQuery学习笔记之 Ajax操作篇(三) - 过程处理

同目录下的 test.html 内容为:

<img src="avatar.jpg" />

点击按钮后希望载入图像:

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

jQuery学习笔记之 Ajax操作篇(三) - 过程处理

此时我们可以使用 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');
 });

此时点击按钮后:

jQuery学习笔记之 Ajax操作篇(三) - 过程处理

对于非 load 方法,还可以使用 fail 方法来连缀处理:

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

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

jQuery学习笔记之 Ajax操作篇(三) - 过程处理

JSONP

JSONP 即 JSON with padding,填充式 JSON,利用的是 <script> 标签可以跨域获取 Javascript 文件的思路,故可以跨域获取 JSON 数据。
JSONP 的格式是把标准 JSON 文件包装在一对圆括号中,圆括号又前置一个任意字符串。这个字符串,即所谓的 P,由请求数据的客户端来决定。
同样是上例的按钮,首先我们将外域页面 otherdomain.com/index.php 内容设置为:

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

我们使用特殊的占位符 ? 来实现跨域获取 JSON 数据:

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

jQuery学习笔记之 Ajax操作篇(三) - 过程处理

数据获取成功。

Javascript 相关文章推荐
IE8 浏览器Cookie的处理
Jan 31 Javascript
Bootstrap弹出带合法性检查的登录框实例代码【推荐】
Jun 23 Javascript
详解BootStrap中Affix控件的使用及保持布局的美观的方法
Jul 08 Javascript
JavaScript制作颜色反转小游戏
Sep 25 Javascript
JavaScript实现窗口抖动效果
Oct 19 Javascript
浅谈jquery采用attr修改form表单enctype不起作用的问题
Nov 25 Javascript
基于hover的用法实例(推荐)
Jul 04 Javascript
JS实现点击循环切换显示内容的方法
Oct 19 Javascript
node前端模板引擎Jade之标签的基本写法
May 11 Javascript
如何自定义微信小程序tabbar上边框的颜色
Jul 09 Javascript
jquery实现加载更多&quot;转圈圈&quot;效果(示例代码)
Nov 09 jQuery
原生JS实现京东查看商品点击放大
Dec 21 Javascript
jquery 为a标签绑定click事件示例代码
Jun 23 #Javascript
a标签click和href执行顺序探讨
Jun 23 #Javascript
jquery trigger伪造a标签的click事件取代window.open方法
Jun 23 #Javascript
javascript将浮点数转换成整数的三个方法
Jun 23 #Javascript
jquery用data方法获取某个元素上的事件
Jun 23 #Javascript
如何正确使用javascript 来进行我们的程序开发
Jun 23 #Javascript
js实现键盘操作实现div的移动或改变的原理及代码
Jun 23 #Javascript
You might like
PHP.MVC的模板标签系统(五)
2006/09/05 PHP
php error_log 函数的使用
2009/04/13 PHP
php中的curl_multi系列函数使用例子
2014/07/29 PHP
PHP性能分析工具XHProf安装使用教程
2015/05/13 PHP
php过滤所有的空白字符(空格、全角空格、换行等)
2015/10/27 PHP
PHP实现的一致性哈希算法完整实例
2015/11/14 PHP
php操作redis命令及代码实例大全
2020/11/19 PHP
一个小型js框架myJSFrame附API使用帮助
2008/06/28 Javascript
PPK 谈 JavaScript 的 this 关键字 [翻译]
2009/09/29 Javascript
jQuery html() in Firefox (uses .innerHTML) ignores DOM changes
2010/03/05 Javascript
jQuery JSON的解析方式分享
2011/04/05 Javascript
基于jquery tab切换(防止页面刷新)
2012/05/23 Javascript
js给onclick赋值传参数的两种方法
2013/11/25 Javascript
js创建一个input数组并绑定click事件的方法
2014/06/12 Javascript
jQuery中removeClass()方法用法实例
2015/01/05 Javascript
深入浅析JavaScript中的作用域和上下文
2016/03/26 Javascript
浅谈JS正则表达式的RegExp对象和括号的使用
2016/07/28 Javascript
js实现点击按钮弹出上传文件的窗口
2016/12/23 Javascript
ES6生成器用法实例分析
2017/04/10 Javascript
Vue.js基础指令实例讲解(各种数据绑定、表单渲染大总结)
2017/07/03 Javascript
深入理解angular2启动项目步骤
2017/07/15 Javascript
JavaScript事件处理程序详解
2017/09/19 Javascript
vue 中引用gojs绘制E-R图的方法示例
2018/08/24 Javascript
移动端图片上传旋转、压缩问题的方法
2018/10/16 Javascript
微信小程序 数据缓存实现方法详解
2019/08/26 Javascript
Vue3 源码导读(推荐)
2019/10/14 Javascript
python判断一个集合是否包含了另外一个集合中所有项的方法
2015/06/30 Python
Python工程师面试题 与Python Web相关
2016/01/14 Python
独特的python循环语句
2016/11/20 Python
Python 常用的安装Module方式汇总
2017/05/06 Python
用scikit-learn和pandas学习线性回归的方法
2019/06/21 Python
jupyter notebook的安装与使用详解
2020/05/18 Python
tensorflow下的图片标准化函数per_image_standardization用法
2020/06/30 Python
人力资源管理毕业求职信
2014/08/05 职场文书
校长师德师风自我剖析材料
2014/09/29 职场文书
深入浅出的讲解:信号调制到底是如何实现的
2022/02/18 无线电