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 相关文章推荐
jQuery学习7 操作JavaScript对象和集合的函数
Feb 07 Javascript
文本框只能选择数据到文本框禁止手动输入
Nov 22 Javascript
jquery用offset()方法获得元素的xy坐标
Sep 06 Javascript
jQuery移除tr无效的解决方法(tr是动态添加)
Sep 22 Javascript
jQuery实现冻结表头的方法
Mar 09 Javascript
js中substring和substr两者区别和使用方法
Nov 09 Javascript
深入理解JS中的substr和substring
Apr 26 Javascript
VUEJS实战之修复错误并且美化时间(2)
Jun 13 Javascript
解决Vue中mounted钩子函数获取节点高度出错问题
May 18 Javascript
react 兄弟组件如何调用对方的方法示例
Oct 23 Javascript
vue 实现Web端的定位功能 获取经纬度
Aug 08 Javascript
浅谈vue中$bus的使用和涉及到的问题
Jul 28 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
JoshChen_php新手进阶高手不可或缺的规范介绍
2013/08/16 PHP
thinkphp3.0输出重复两次的解决方法
2014/12/19 PHP
33道php常见面试题及答案
2015/07/06 PHP
如何使用微信公众平台开发模式实现多客服
2016/01/06 PHP
详解PHP swoole process的使用方法
2017/08/26 PHP
JavaScript 继承详解(二)
2009/07/13 Javascript
自定义一个jquery插件[鼠标悬浮时候 出现说明label]
2011/06/27 Javascript
JS实现网页上随机产生超链接地址的方法
2015/11/09 Javascript
web 前端常用组件之Layer弹出层组件
2016/09/22 Javascript
jQuery中弹出iframe内嵌页面元素到父页面并全屏化的实例代码
2016/12/27 Javascript
理解javascript中的闭包
2017/01/11 Javascript
jQuery插件zTree实现删除树节点的方法示例
2017/03/08 Javascript
Nodejs把接收图片base64格式保存为文件存储到服务器上
2018/09/26 NodeJs
通过npm或yarn自动生成vue组件的方法示例
2019/02/12 Javascript
在Layui中操作数据表格,给指定单元格添加事件示例
2019/10/26 Javascript
在Vue中使用this.$store或者是$route一直报错的解决
2019/11/08 Javascript
vue 子组件和父组件传值的示例
2020/09/11 Javascript
详解Vue数据驱动原理
2020/11/17 Javascript
详解python开发环境搭建
2016/12/16 Python
详解Python进程间通信之命名管道
2017/08/28 Python
微信跳一跳小游戏python脚本
2018/01/05 Python
详解Python数据分析--Pandas知识点
2019/03/23 Python
python中的列表与元组的使用
2019/08/08 Python
python实现处理mysql结果输出方式
2020/04/09 Python
使用canvas对多图片拼合并导出图片的方法
2018/08/28 HTML / CSS
新东方旗下远程教育网站:新东方在线
2020/03/19 全球购物
abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗?
2012/10/15 面试题
医学院学生的自我评价分享
2013/11/19 职场文书
查摆问题自我剖析材料
2014/08/18 职场文书
党员干部民主生活会议批评与自我批评材料
2014/09/20 职场文书
学校办公室主任岗位职责
2015/04/01 职场文书
爱护环境建议书
2015/09/14 职场文书
教师教育心得体会
2016/01/19 职场文书
2016廉洁从政心得体会
2016/01/19 职场文书
python神经网络编程之手写数字识别
2021/05/08 Python
MySQL数据库完全卸载的方法
2022/03/03 MySQL