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 相关文章推荐
js实现页面打印功能实例代码(附去页眉页脚功能代码)
Dec 15 Javascript
jquery之超简单的div显示和隐藏特效demo(分享)
Jul 09 Javascript
JS实现仿微博可关闭弹出层效果
Sep 21 Javascript
js代码实现点击按钮出现60秒倒计时
Jan 28 Javascript
学习JavaScript设计模式之代理模式
Jan 12 Javascript
Document.body.scrollTop的值总为零的快速解决办法
Jun 09 Javascript
浅谈jquery的html方法里包含特殊字符的处理
Nov 30 Javascript
jQuery实现每隔一段时间自动更换样式的方法分析
May 03 jQuery
node中IO以及定时器优先级详解
May 10 Javascript
详解小程序开发经验:多页面数据同步
May 18 Javascript
解决Antd Table组件表头不对齐的问题
Oct 27 Javascript
JavaScript函数柯里化实现原理及过程
Dec 02 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实现密保卡功能实现代码&amp;lt;打包下载直接运行&amp;gt;
2011/10/09 PHP
谨慎使用PHP的引用原因分析
2012/09/06 PHP
PHP自动识别字符集并完成转码详解
2013/08/02 PHP
php中自定义函数dump查看数组信息类似var_dump
2014/01/27 PHP
PHP使用php-resque库配合Redis实现MQ消息队列的教程
2016/06/29 PHP
php中html_entity_decode实现HTML实体转义
2018/06/13 PHP
laravel-admin自动生成模块,及相关基础配置方法
2019/10/08 PHP
laravel清除视图缓存的代码
2019/10/23 PHP
Prototype Object对象 学习
2009/07/12 Javascript
ExtJs 3.1 XmlTreeLoader Example Error
2010/02/09 Javascript
JQuery动画animate的stop方法使用详解
2014/05/09 Javascript
使用iojs的jsdom库实现同步系统时间
2015/04/20 Javascript
jQuery插件简单学习实例教程
2016/07/01 Javascript
NodeJS链接MySql数据库的操作方法
2017/06/27 NodeJs
Node.js的Koa实现JWT用户认证方法
2018/05/05 Javascript
vue 父组件中调用子组件函数的方法
2019/06/06 Javascript
layui table 表格模板按钮的实例代码
2019/09/21 Javascript
Vue.js实现大屏数字滚动翻转效果
2019/11/29 Javascript
VSCode Vue开发推荐插件和VSCode快捷键(小结)
2020/08/08 Javascript
[03:46]DOTA2英雄基础教程 维萨吉
2013/12/11 DOTA
Python matplotlib 画图窗口显示到gui或者控制台的实例
2018/05/24 Python
Tornado Web Server框架编写简易Python服务器
2018/07/28 Python
pyshp创建shp点文件的方法
2018/12/31 Python
Django框架设置cookies与获取cookies操作详解
2019/05/27 Python
解决pycharm 安装numpy失败的问题
2019/12/05 Python
Python Tornado之跨域请求与Options请求方式
2020/03/28 Python
RentCars.com巴西:汽车租赁网站
2016/08/22 全球购物
Myprotein意大利官网:欧洲第一运动营养品牌
2018/11/22 全球购物
了解AppleShare protocol(AppleShare协议)吗
2015/08/28 面试题
数据员岗位职责
2013/11/19 职场文书
公司大门门卫岗位职责
2014/06/11 职场文书
纪律教育学习月活动总结
2014/08/27 职场文书
《乘法分配律》教学反思
2016/02/24 职场文书
Python - 10行代码集2000张美女图
2021/05/23 Python
python神经网络ResNet50模型
2022/05/06 Python
PHP 时间处理类Carbon
2022/05/20 PHP