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 相关文章推荐
Prototype使用指南之range.js
Jan 10 Javascript
js的匿名函数使用介绍
Dec 11 Javascript
JS判断当前页面是否在微信浏览器打开的方法
Dec 08 Javascript
基于JS代码实现导航条弹出式悬浮菜单
Jun 17 Javascript
浅谈JS验证表单文本域输入空格的问题
Feb 14 Javascript
基于Vue实例生命周期(全面解析)
Aug 16 Javascript
React中上传图片到七牛的示例代码
Oct 10 Javascript
基于 Vue 实现一个酷炫的 menu插件
Nov 14 Javascript
解析Vue 2.5的Diff算法
Nov 28 Javascript
JavaScript引用类型Object常见用法实例分析
Aug 08 Javascript
vue.js配合$.post从后台获取数据简单demo分享
Aug 11 Javascript
Node.js console控制台简单用法分析
Jan 04 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 ignore_user_abort与register_shutdown_function 使用方法
2009/06/14 PHP
常用的php图片处理类(水印、等比缩放、固定高宽)分享
2015/06/19 PHP
PHP自动识别当前使用移动终端
2018/05/21 PHP
模拟jQuery ajax服务器端与客户端通信的代码
2011/03/28 Javascript
JS定时器实例
2013/04/17 Javascript
node.js中的http.createClient方法使用说明
2014/12/15 Javascript
jquery控制背景音乐开关与自动播放提示音的方法
2015/02/06 Javascript
js拆分字符串并将分割的数据放到数组中的方法
2015/05/06 Javascript
javascript实现淡蓝色的鼠标拖动选择框实例
2015/05/09 Javascript
JavaScript的Date()方法使用详解
2015/06/09 Javascript
jQuery实现图片轮播特效代码分享
2015/09/15 Javascript
高效Web开发的10个jQuery代码片段
2016/07/22 Javascript
bootstrap网格系统使用方法解析
2017/01/13 Javascript
Vue.use源码分析
2017/04/22 Javascript
ES6 Promise对象概念及用法实例详解
2019/10/15 Javascript
js中apply和call的理解与使用方法
2019/11/27 Javascript
[00:52]DOTA2齐天大圣预告片
2016/08/13 DOTA
[50:50]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.20
2020/12/23 DOTA
python多线程抓取天涯帖子内容示例
2014/04/03 Python
Python制作简易注册登录系统
2016/12/15 Python
django celery redis使用具体实践
2019/04/08 Python
Python迭代器iterator生成器generator使用解析
2019/10/24 Python
详解通过变换矩阵实现canvas的缩放功能
2019/01/14 HTML / CSS
IE10 Error.stack 让脚本调试更加方便快捷
2013/04/22 HTML / CSS
乡镇干部十八大感言
2014/02/17 职场文书
春节联欢会主持词
2014/03/24 职场文书
超市开业庆典策划方案
2014/05/14 职场文书
品牌服务方案
2014/06/03 职场文书
大学生个人简历自荐信
2015/03/06 职场文书
培养联系人考察意见
2015/06/01 职场文书
军训结束新闻稿
2015/07/17 职场文书
爱岗敬业先进典型事迹材料(2016推荐版)
2016/02/26 职场文书
浅析MongoDB之安全认证
2021/06/26 MongoDB
Python字典的基础操作
2021/11/01 Python
漫画「狩龙人拉格纳」公开TV动画预告图
2022/03/22 日漫
特别篇动画《总之就是非常可爱 ~制服~》PV公开,2022年夏季播出
2022/04/04 日漫