拥抱基于jquery.deferred的ajax,和层层嵌套回调的ajax说拜拜
前言
在项目中,无论是维护自己的代码,还是重构他人的项目代码,看到层层嵌套,异常冗余的某个function,那时我们的内心肯定是奔溃的!
在jquery1.5版本之前,如果我们某个操作需要多个ajax异步请求成功后执行,只能在前一个ajax成功的回调函数中接着发送ajax请求,这样一来,不光代码的可读性变得异常差,而且也失去了异步的意义。
jquery开发者果然在1.5版本后引入了deferred延迟对象。而jquery.ajax也基于它迎来了巨变,我们先对比下有哪些区别。
传统ajax和现代ajax
传统ajax写法:
$.ajax({
url: "xx.html",
data :{},
success: function(){
alert("成功了!");
},
error:function(){
alert("出错啦!");
complete:function(){
alert("啦啦啦!");
} });
现代ajax写法:
$.ajax({
url: "xx.html",
data :{}
})
.done( function(){
alert("成功了!");
})
.fail(function(){
alert("出错啦!");
})
.always(function(){
alert("啦啦啦!");
})
基于现代ajax写法的$.when()方法
var ajax1= $.ajax({
url:'xx.php',
data:{}
});
var ajax2= $.ajax({
url:'xxx.php',
data:{}
});
var ajax3= $.ajax({
url:'xxxx.php',
data:{}
});
$.when(ajax1,ajax2,ajax3)
.done(function(a,b,c){
//dosomething
})
.fail(function(a,b,c){
//dosomething
});
完美解决异步层层嵌套的问题,可读性大大提高。至于$.when(args)中的args,也就是a,b,c具体是什么,有兴趣的可以去打印出来看看哦
拥抱基于jquery.deferred的ajax,和层层嵌套回调的ajax说拜拜的更多相关文章
- 封装通用的 ajax, 基于 jQuery。
在前端异步获取数据时候每次都是使用 ajax:为了通用性更好,然而封装通用的 ajax 是一个一劳永逸的办法. 本次基于 jQuery 封装实现: 第一步: 引入 jQuery: <script ...
- jquery文件上传控件 Uploadify 可以和ajax交互
http://www.cnblogs.com/mofish/archive/2012/11/30/2796698.html 原网址 基于jquery的文件上传控件,支持ajax无刷新上传,多个文件同 ...
- jQuery Deferred对象详细源码分析(-)
本系列文章讲介绍这个Deferred东西到底拿来干什么,从1.5版本加进来,jQuery的很多代码都重写了.直接先上源码分析了,清楚了源码分析,下节将讲具体的应用 以及应用场景. 创建对象 var d ...
- jQuery deferred应用之ajax详细源码分析(二)
在上一节中,我只贴出了$.Deferred的源码分析,并没用讲解怎么使用它,现在我们先看看$.ajax是如何使用它,让我们进行异步任务的处理. 如果没看上节的代码,请先稍微了解一下jQuery Def ...
- 基于jQuery的ajax对WebApi和OData的封装
基于jQuery的ajax对WebApi和OData的封装 WebApi 的使用带来了一个显著的特点,对type有一定的要求.一般ajax的type无非就是两种,GET和POST.如果用JSONP来跨 ...
- 基于Jquery+Ajax+Json+高效分页
摘要 分页我相信大家存储过程分页已经很熟悉了,ajax更是耳熟能详了,更别说我们的json,等等. 如果说您没用过这些东东的话,我相信看完这篇博文会对您有帮助的,,如果有任何问题不懂或者有bug没问题 ...
- 源码来袭!!!基于jquery的ajax分页插件(demo+源码)
前几天打开自己的博客园主页,无意间发现自己的园龄竟然有4年之久了.可是看自己的博客列表却是空空如也,其实之前也有写过,但是一直没发布(然而好像并没有什么卵用).刚开始学习编程时就接触到博客园,且在博客 ...
- 基于Jquery+Ajax+Json+存储过程 高效分页
在做后台开发中,都会有大量的列表展示,下面给大家给大家分享一套基于Jquery+Ajax+Json+存储过程高效分页列表,只需要传递几个参数即可.当然代码也有改进的地方,如果大家有更好的方法,愿留下宝 ...
- 基于jQuery实现的Ajax 验证用户名唯一性
基于jQuery实现的Ajax 验证用户名唯一性 前端jsp页面代码 <tr> <th><span class="requiredField"> ...
随机推荐
- Android驱动开发5-8章读书笔记
Android驱动开发读书笔记 第五章 S5PV210是一款32位处理器,具有 ...
- Spring快速入门
什么是Spring Spring是分层的JavaSE/EE full-stack(一站式) 轻量级开源框架 分层 SUN提供的EE的三层结构:web层.业务层.数据访问层(持久层/集成层) Strut ...
- java多线程面试题
很多核心Java面试题来源于多线程(Multi-Threading)和集合框架(Collections Framework),理解核心线程概念时,娴熟的实际经验是必需的.这篇文章收集了Java线程方面 ...
- LINUX 查看当前系统的负载情况
uptime linux uptime命令主要用于获取主机运行时间和查询linux系统负载等信息. eg: # uptime 02:03:50 up 126 days, 12:57, 2 users, ...
- Sharepoint + Office Infopart + Quick Apps for Sharepoint搭建无纸化工作平台
项目背景: 某大型外企各分部通过互联网专线统一域环境,Exchange邮件系统,Sharepoint平台及依赖环境已经购买并搭建起来,Dell Quick app for Sharepoint已购卖并 ...
- 【改】iOS学习之键盘类型UIKeyboardType
关于 UITextField 的键盘是可以自定义的,正好在一个代码用这个,就总结一下. 在 UITextField 中有一个 keyboardType 属性,它的类型是一个枚举值,下面就是枚举值和对应 ...
- 【转】java-String中的 intern()
转自:http://blog.sina.com.cn/s/blog_69dcd5ed0101171h.html 1. 首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值 ...
- crawler4j 学习
crawler4j 学习(一) crawler4j是一个轻量级多线程网络爬虫,开发者可以调用相应的接口在短时间内创建一个多线程网络爬虫. 前期准备 使用maven 为了使用最近版本的crawler4j ...
- 在list_*页面显示出一级栏目下的所有二级栏目
<ul class="nav nav-pills nav-stacked"> {dede:channelartlist typeid='1,1'} <div cl ...
- java分享第七天-03(递归打印文件目录的树状结构)
public static void main(String[] args) { File file= new File("e:/list"); printFile(file, 0 ...