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 相关文章推荐
JavaScript脚本性能优化注意事项
Nov 18 Javascript
jQuery对象[0]是什么含义?
Jul 31 Javascript
ie中js创建checkbox默认选中问题探讨
Oct 21 Javascript
javascript中Date对象的getDay方法使用指南
Dec 22 Javascript
Javascript基础教程之比较操作符
Jan 18 Javascript
jQuery的extend方法【三种】
Dec 14 Javascript
如何解决vue与传统jquery插件冲突
Mar 20 Javascript
深入理解vue中slot与slot-scope的具体使用
Jan 26 Javascript
使用Angular CLI生成 Angular 5项目教程详解
Mar 18 Javascript
vue实现文件上传功能
Aug 13 Javascript
JavaScript 实现下雪特效的示例代码
Sep 09 Javascript
JavaScript实现筛选数组
Mar 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模板引擎SMARTY
2006/10/09 PHP
PHP memcache扩展的三种安装方法
2009/04/26 PHP
PHP自定义大小验证码的方法详解
2013/06/07 PHP
浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞)
2013/06/29 PHP
symfony表单与页面实现技巧
2015/01/26 PHP
PHP中的socket_read和socket_recv区别详解
2015/02/09 PHP
PHP 中TP5 Request 请求对象的实例详解
2017/07/31 PHP
JavaScript 异步调用框架 (Part 5 - 链式实现)
2009/08/04 Javascript
jquery 插件实现图片延迟加载效果代码
2010/02/06 Javascript
基于jQuery实现下拉框
2014/11/24 Javascript
js实现YouKu的漂亮搜索框效果
2015/08/19 Javascript
再谈javascript注入 黑客必备!
2016/09/14 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/10/05 Javascript
微信小程序 form组件详解
2016/10/25 Javascript
nodejs连接mysql数据库及基本知识点详解
2018/03/20 NodeJs
对类Vue的MVVM前端库的实现代码
2018/09/07 Javascript
nodejs微信开发之接入指南
2019/03/17 NodeJs
详解Jest结合Vue-test-utils使用的初步实践
2019/06/27 Javascript
微信小程序下拉加载和上拉刷新两种实现方法详解
2019/09/05 Javascript
记录Django开发心得
2014/07/16 Python
Python中用sleep()方法操作时间的教程
2015/05/22 Python
python实现聚类算法原理
2018/02/12 Python
python如何修改装饰器中参数
2018/03/20 Python
Django 使用logging打印日志的实例
2018/04/28 Python
Python利用openpyxl库遍历Sheet的实例
2018/05/03 Python
浅谈tensorflow中几个随机函数的用法
2018/07/27 Python
深入了解Django View(视图系统)
2019/07/23 Python
澳大利亚二手奢侈品网站:Modsie
2019/09/23 全球购物
如何查找和删除数据库中的重复数据
2014/11/05 面试题
Servlet都有哪些方法?主要作用是什么?
2014/03/04 面试题
计算机本科生自荐信
2013/10/15 职场文书
机关保密承诺书
2014/06/03 职场文书
办理护照工作证明
2014/10/10 职场文书
教师党员个人整改措施
2014/10/27 职场文书
观看焦裕禄观后感
2015/06/09 职场文书
2016年寒假生活小结
2015/10/10 职场文书