浅谈jQuery中Ajax事件beforesend及各参数含义


Posted in Javascript onDecember 03, 2016

Ajax会触发很多事件。

有两种事件,一种是局部事件,一种是全局事件:

局部事件:通过$.ajax来调用并且分配。

$.ajax({
beforeSend: function(){
// Handle the beforeSend event
},
complete: function(){
// Handle the complete event
}
// ...
});

全局事件,可以用bind来绑定,用unbind来取消绑定。这个跟click/mousedown/keyup等事件类似。但他可以传递到每一个DOM元素上。

$("#loading").bind("ajaxSend", function(){ //使用bind
  $(this).show();
}).ajaxComplete(function(){ //直接使用ajaxComplete
  $(this).hide();
});

当然,你某一个Ajax请求不希望产生全局的事件,则可以设置global:false

$.ajax({
url: "test.html",
global: false,
// ...
});

事件的顺序如下:

ajaxStart 全局事件
开始新的Ajax请求,并且此时没有其他ajax请求正在进行。

beforeSend 局部事件
当一个Ajax请求开始时触发。如果需要,你可以在这里设置XHR对象。

ajaxSend 全局事件
请求开始前触发的全局事件

success 局部事件
请求成功时触发。即服务器没有返回错误,返回的数据也没有错误。

ajaxSuccess 全局事件
全局的请求成功

error 局部事件
仅当发生错误时触发。你无法同时执行success和error两个回调函数。

ajaxError 全局事件
全局的发生错误时触发

complete 局部事件
不管你请求成功还是失败,即便是同步请求,你都能在请求完成时触发这个事件。

ajaxComplete 全局事件
全局的请求完成时触发

ajaxStop 全局事件
当没有Ajax正在进行中的时候,触发。

局部事件回调的参数在文档中写的很清楚了,这里就不累述了。

全局事件中,除了ajaxStart和ajaxStop之外,其他的事件都有3个参数

event, XMLHttpRequest, ajaxOptions

第一个是事件,第二个是XHR对象,第三个参数最有用,是当时调用这个ajax的时候的参数。

对于ajaxError,还有第四个参数thrownError,只有当异常发生时才会被传递。

我们可以利用ajaxOptions来写一个全局的ajax事件。

比如

$("#msg").beforeSend(function(e,xhr,o) {
  $(this).html("正在请求"+o.url);
}).ajaxSuccess(function(e,xhr,o) {
  $(this).html(o.url+"请求成功");
}).ajaxError(function(e,xhr,o) {
  $(this).html(o.url+"请求失败");
});

对于这个例子,

这样我们就可以很方便的全局地在某个地方显示当前的ajax状态。

当然,之前说了,第三个参数实际上是传递给ajax的参数。get/post/load/getScript/getJSON等方法本质上都是调用ajax方法的,所以ajaxOptions.url属性总是有效的。

还有更丰富的例子。

如果你用ajax调用,还可以传递自定义参数。下面的例子我就自定义了一个msg参数给了ajax调用

//自定义参数msg
$.ajax({url:"test1.html",type:"get",msg:"页面一"});
$.ajax({url:"test2.html",type:"get",msg:"页面二"});
$.ajax({url:"test3.html",type:"get",msg:"页面三"});
$.ajax({url:"test4.html",type:"get",msg:"页面四"});
//这里就能获取到自定义参数msg。
//这可以用来区别对待不同的ajax请求。
$("#msg").beforeSend(function(e,xhr,o) {
  $(this).html("正在请求"+o.msg);
}).ajaxSuccess(function(e,xhr,o) {
  $(this).html(o.msg+"请求成功");
}).ajaxError(function(e,xhr,o) {
  $(this).html(o.msg+"请求失败");
});

最后对于load方法,还有话说。

其他的简易ajax方法,比如get,post,getJSON等,他们的回调函数都是设置了success回调。

而只有load设置的其实是complete回调。

所以,load里设置的回调函数的参数应该有2个。

XMLHttpRequest和textStatus

但实际上也并非如此。

load的回调有三个参数

XMLHttpRequest.responseText, textStatus, XMLHttpRequest

所以,你可以在load的回调里

通过textStatus==”success”或者textStatus==”error”来判断是否调用成功。

或者用XMLHttpRequest.status属性判断是200还是404或者其他的。

这点上,我认为比普通的get/post等方法更先进。如果要单数设置每get的error是不可能的。但是设置一个全局的ajaxError其实也是不错的选择

以上这篇浅谈jQuery中Ajax事件beforesend及各参数含义就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Google韩国首页图标动画效果
Aug 26 Javascript
JavaScript 学习笔记 Black.Caffeine 09.11.28
Nov 30 Javascript
Jquery Ajax学习实例7 Ajax所有过程事件分析示例
Mar 23 Javascript
Js+Flash实现访问剪切板操作
Nov 20 Javascript
页面只能打开一次Cooike如何实现
Dec 04 Javascript
JavaScript实现字符串与日期的互相转换及日期的格式化
Mar 07 Javascript
JS实现颜色梯度与渐变效果完整实例
Dec 30 Javascript
关于Vue实现组件信息的缓存问题
Aug 23 Javascript
微信小程序实现简单input正则表达式验证功能示例
Nov 30 Javascript
基于vue 实现token验证的实例代码
Dec 14 Javascript
解决Layui数据表格显示无数据提示的问题
Nov 14 Javascript
OpenLayers3实现地图显示功能
Sep 25 Javascript
jquery 判断div show的状态实例
Dec 03 #Javascript
利用浮层使select不可选的实现方法
Dec 03 #Javascript
textarea 在浏览器中固定大小和禁止拖动的实现方法
Dec 03 #Javascript
浅谈jQuery hover(over, out)事件函数
Dec 03 #Javascript
jquery 多个radio的click事件实例
Dec 03 #Javascript
jquery点击展示与隐藏更多内容
Dec 03 #Javascript
Javascript 实现放大镜效果实例详解
Dec 03 #Javascript
You might like
2020年4月放送决定!第2期TV动画《邪神酱飞踢》视觉图&主题曲情报公开!
2020/03/06 日漫
PHP中,文件上传
2006/12/06 PHP
用PHP生成静态HTML速度快类库
2007/03/18 PHP
PHP XML操作的各种方法解析(比较详细)
2010/06/17 PHP
php使用fgetcsv读取csv文件出现乱码的解决方法
2014/11/08 PHP
PHP实现返回JSON和XML的类分享
2015/01/28 PHP
微信支付开发交易通知实例
2016/07/12 PHP
javascript中的prototype属性实例分析说明
2010/08/09 Javascript
jQuery插件实现静态HTML验证码校验
2015/11/06 Javascript
浅谈jQuery效果函数
2016/09/16 Javascript
概述BootStrap中role="form"及role作用角色
2016/12/08 Javascript
bootstrap table 表格中增加下拉菜单末行出现滚动条的快速解决方法
2017/01/05 Javascript
vue+axios实现登录拦截的实例代码
2017/05/22 Javascript
彻底解决 webpack 打包文件体积过大问题
2017/07/07 Javascript
angular指令笔记ng-options的使用方法
2017/09/18 Javascript
详谈构造函数加括号与不加括号的区别
2017/10/26 Javascript
Vue表单及表单绑定方法
2018/09/04 Javascript
Vue 开发必须知道的36个技巧(小结)
2019/10/09 Javascript
将Emacs打造成强大的Python代码编辑工具
2015/11/20 Python
Python的collections模块中namedtuple结构使用示例
2016/07/07 Python
python常见的格式化输出小结
2016/12/15 Python
linecache模块加载和缓存文件内容详解
2018/01/11 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
2018/05/30 Python
Python模拟登录的多种方法(四种)
2018/06/01 Python
python读取xlsx的方法
2018/12/25 Python
Python图像处理库PIL的ImageEnhance模块使用介绍
2020/02/26 Python
Python修改DBF文件指定列
2020/12/19 Python
Ted Baker英国官网:男士和女士服装及配件
2017/03/13 全球购物
加拿大国民体育购物网站:National Sports
2018/11/04 全球购物
英国家庭家具、照明和花园家具购物网站:Furniture123
2018/12/31 全球购物
市场营销专业个人自荐信格式
2013/09/21 职场文书
工作自荐信
2013/12/11 职场文书
探矿工程师自荐信
2014/01/24 职场文书
国庆65周年演讲稿:回首往昔,展望未来
2014/09/21 职场文书
银行先进个人总结
2015/02/15 职场文书
详细总结Python常见的安全问题
2021/05/21 Python