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 相关文章推荐
HTML页面如何象ASP一样接受参数
Feb 07 Javascript
jquery的ajax请求全面了解
Mar 20 Javascript
jQuery实现html元素拖拽
Jul 21 Javascript
jquery mobile 实现自定义confirm确认框效果的简单实例
Jun 17 Javascript
JS常见疑难点分析之match,charAt,charCodeAt,map,search用法分析
Dec 25 Javascript
原生JS实现日历组件的示例代码
Sep 22 Javascript
JavaScript中Array方法你该知道的正确打开方法
Sep 11 Javascript
微信小程序五子棋游戏AI实现方法【附demo源码下载】
Feb 20 Javascript
javascript+HTML5 canvas绘制时钟功能示例
May 15 Javascript
vue 实现移动端键盘搜索事件监听
Nov 06 Javascript
小程序如何写动态标签的实现方法
Feb 05 Javascript
js实现滑动进度条效果
Aug 21 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
星际争霸秘籍
2020/03/04 星际争霸
实例讲解PHP面向对象之多态
2014/08/20 PHP
php判断一个数组是否为有序的方法
2015/03/27 PHP
DEDECMS首页调用图片集里的多张图片
2015/06/05 PHP
动态控制Table的js代码
2007/03/07 Javascript
jquery(live)中File input的change方法只起一次作用的解决办法
2011/10/21 Javascript
jQuery学习笔记 操作jQuery对象 文档处理
2012/09/19 Javascript
JavaScript中将一个值转换为字符串的方法分析[译]
2012/09/21 Javascript
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
2013/04/08 Javascript
用js代码改变单选框选中状态的简单实例
2013/12/18 Javascript
js获取视频时长代码
2014/04/10 Javascript
JSONP跨域GET请求解决Ajax跨域访问问题
2014/12/31 Javascript
javascript弹出窗口实现代码
2015/11/12 Javascript
jQuery 插件封装的方法
2016/11/16 Javascript
JS简单获取当前日期和农历日期的方法
2017/04/17 Javascript
jQuery 中msgTips 顶部弹窗效果实现代码
2017/08/14 jQuery
vue.js的手脚架vue-cli项目搭建的步骤
2017/08/30 Javascript
Vue封装Swiper实现图片轮播效果
2018/02/06 Javascript
使用Angular CLI生成路由的方法
2018/03/24 Javascript
centos 上快速搭建ghost博客方法分享
2018/05/23 Javascript
vue组件实践之可搜索下拉框功能
2018/11/25 Javascript
30分钟精通React今年最劲爆的新特性——React Hooks
2019/03/11 Javascript
微信小程序事件 bindtap bindinput代码实例
2019/08/26 Javascript
jquery传参及获取方式(两种方式)
2020/02/13 jQuery
详解python实现线程安全的单例模式
2018/03/05 Python
Python 调用C++封装的进一步探索交流
2021/03/04 Python
CSS3 实现童年的纸飞机
2019/05/05 HTML / CSS
营销与策划专业毕业生求职信
2013/11/01 职场文书
办护照工作证明范本
2014/01/14 职场文书
付款委托书范本
2014/04/04 职场文书
区域经理岗位职责
2015/02/02 职场文书
古诗之感恩老师
2019/10/24 职场文书
Python如何利用正则表达式爬取网页信息及图片
2021/04/17 Python
Python中基础数据类型 set集合知识点总结
2021/08/02 Python
Python 如何利用ffmpeg 处理视频素材
2021/11/27 Python
python疲劳驾驶困倦低头检测功能的实现
2022/04/04 Python