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 相关文章推荐
ExtJS 设置级联菜单的默认值
Jun 13 Javascript
用js设置下拉框为只读的小技巧
Apr 10 Javascript
在JavaScript中处理时间之getHours()方法的使用
Jun 10 Javascript
在WordPress中加入Google搜索功能的简单步骤讲解
Jan 04 Javascript
javascript实现PC网页里的拖拽效果
Mar 14 Javascript
js html5 css俄罗斯方块游戏再现
Oct 17 Javascript
详解微信小程序开发—你期待的分享功能来了,微信小程序序新增5大功能
Dec 23 Javascript
完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
Jan 08 Javascript
react-native DatePicker日期选择组件的实现代码
Sep 12 Javascript
node.js的exports、module.exports与ES6的export、export default深入详解
Oct 26 Javascript
Element-ui tree组件自定义节点使用方法代码详解
Sep 17 Javascript
微信小程序实现底部导航
Nov 05 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
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
2007/09/02 PHP
深入理解PHP类的自动载入机制
2016/09/16 PHP
Javascript select控件操作大全(新增、修改、删除、选中、清空、判断存在等)
2008/12/19 Javascript
JavaScript 在线压缩和格式化收藏
2009/01/16 Javascript
基于jQuery的投票系统显示结果插件
2011/08/12 Javascript
中文路径导致unitpngfix.js不正常的解决方法
2013/06/26 Javascript
基于编写jQuery的无缝滚动插件
2014/08/02 Javascript
Node.js利用Net模块实现多人命令行聊天室的方法
2016/12/23 Javascript
JavaScript之underscore_动力节点Java学院整理
2017/07/03 Javascript
js使用html2canvas实现屏幕截取的示例代码
2017/08/28 Javascript
简单谈谈JS中的正则表达式
2017/09/11 Javascript
JS实现多物体运动的方法详解
2018/01/23 Javascript
还不懂递归?读完这篇文章保证你会懂
2018/07/29 Javascript
使用post方法实现json往返传输数据的方法
2019/03/30 Javascript
小程序封装路由文件和路由方法(5种全解析)
2019/05/26 Javascript
解决VUE双向绑定失效的问题
2019/10/29 Javascript
jQuery实现朋友圈查看图片
2020/09/11 jQuery
[40:17]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第一场
2018/04/06 DOTA
python文本数据相似度的度量
2018/03/12 Python
对django views中 request, response的常用操作详解
2019/07/17 Python
Python实现的企业粉丝抽奖功能示例
2019/07/26 Python
Django集成celery发送异步邮件实例
2019/12/17 Python
Python unittest单元测试框架实现参数化
2020/04/29 Python
python 读取、写入txt文件的示例
2020/09/27 Python
德国鞋子网上商店:Omoda.de
2017/03/31 全球购物
节省高达65%的城市景点费用:Go City
2019/07/06 全球购物
植村秀加拿大官网:Shu Uemura加拿大
2019/09/03 全球购物
高速铁道技术专业求职信
2014/08/09 职场文书
小学假期安全广播稿
2014/09/28 职场文书
2015夏季作息时间调整通知
2015/04/24 职场文书
迁徙的鸟观后感
2015/06/09 职场文书
感恩教师节主题班会
2015/08/12 职场文书
2016大学迎新晚会开场白
2015/11/24 职场文书
导游词之广东佛山(南风古灶)
2019/09/24 职场文书
python中的class_static的@classmethod的巧妙用法
2021/06/22 Python
SpringBoot项目多数据源及mybatis 驼峰失效的问题解决方法
2022/07/07 Java/Android