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 相关文章推荐
input+select(multiple) 实现下拉框输入值
May 21 Javascript
javascript 跳转代码集合
Dec 03 Javascript
使用jQuery轻松实现Ajax的实例代码
Aug 16 Javascript
JavaScript高级程序设计(第3版)学习笔记9 js函数(下)
Oct 11 Javascript
原生js实现半透明遮罩层效果具体代码
Jun 06 Javascript
Java中Timer的用法详解
Oct 21 Javascript
HTML5基于Tomcat 7.0实现WebSocket连接并实现简单的实时聊天
Oct 31 Javascript
详解angular笔记路由之angular-router
Sep 12 Javascript
使用Angular CLI生成 Angular 5项目教程详解
Mar 18 Javascript
小程序实现授权登陆的解决方案
Dec 02 Javascript
微信小程序使用二次贝塞尔曲线画波浪
Dec 25 Javascript
详解Anyscript开发指南绕过typescript类型检查
Sep 23 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
PHP4之COOKIE支持详解
2006/10/09 PHP
用PHPdig打造属于你自己的Google[图文教程]
2007/02/14 PHP
destoon调用企业会员公司形象图片的实现方法
2014/08/21 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
2018/05/29 PHP
thinkPHP5.1框架中Request类四种调用方式示例
2019/08/03 PHP
JScript中的&quot;this&quot;关键字使用方式补充材料
2007/03/08 Javascript
解决使用attachEvent函数时,this指向被绑定的元素的问题的方法
2007/08/13 Javascript
关于javascript DOM事件模型的两件事
2010/07/22 Javascript
JavaScript高级程序设计 阅读笔记(十三) js定义类或对象
2012/08/14 Javascript
文本框input聚焦失焦样式实现代码
2012/10/12 Javascript
js实现页面跳转重定向的几种方式
2014/05/29 Javascript
javascript基础语法学习笔记
2016/01/04 Javascript
JavaScript BASE64算法实现(完美解决中文乱码)
2017/01/10 Javascript
NodeJs测试框架Mocha的安装与使用
2017/03/28 NodeJs
基于bootstrop常用类总结(推荐)
2017/09/11 Javascript
AngularJS实现表单验证功能详解
2017/10/12 Javascript
js 只比较时间大小的实例
2017/10/26 Javascript
vue渲染时闪烁{{}}的问题及解决方法
2018/03/28 Javascript
详解vue 单页应用(spa)前端路由实现原理
2018/04/04 Javascript
微信小程序中进行地图导航功能的实现方法
2018/06/29 Javascript
浅谈从React渲染流程分析Diff算法
2018/09/08 Javascript
在Vue中获取组件声明时的name属性方法
2018/09/12 Javascript
tensorflow 1.0用CNN进行图像分类
2018/04/15 Python
python实现名片管理系统
2018/11/29 Python
Python利用lxml模块爬取豆瓣读书排行榜的方法与分析
2019/04/15 Python
pandas的to_datetime时间转换使用及学习心得
2019/08/11 Python
ProBikeKit新西兰:自行车套件,跑步和铁人三项装备
2017/04/05 全球购物
德国最新街头服饰网上商店:BODYCHECK
2019/09/15 全球购物
广告设计专业自荐信范文
2013/11/14 职场文书
大二学期个人自我评价
2014/01/13 职场文书
叶问观后感
2015/06/15 职场文书
2016庆祝教师节新闻稿
2015/11/25 职场文书
Django使用redis配置缓存的方法
2021/06/01 Redis
opencv-python图像配准(匹配和叠加)的实现
2021/06/23 Python
Python实现生活常识解答机器人
2021/06/28 Python
MySQL使用IF语句及用case语句对条件并结果进行判断 
2022/09/23 MySQL