ajax第三步
ajaxSend()函数用于设置当AJAX请求即将被发送时执行的回调函数。
这是一个全局AJAX事件函数,用于为任何AJAX请求的ajaxSend事件绑定事件处理函数。当AJAX请求即将被发送时,将触发ajaxSend事件,并执行绑定的事件处理函数。
该函数必须在jQuery对象实例上调用,ajaxSend()将为每个匹配元素的ajaxSend事件绑定处理函数。当AJAX请求即将被发送完成后,所有匹配元素上的处理函数都将被触发执行。事件处理函数内的this将指向当前DOM元素。
你可以在同一元素多次调用该函数,从而绑定多个事件处理函数。触发ajaxSend事件时,jQuery会按照绑定的先后顺序依次执行绑定的事件处理函数。
从jQuery 1.8开始,该函数只能为document对象的ajaxSend事件绑定处理函数,为其他元素绑定的事件处理函数不会起作用。
如果在jQuery.ajax()或jQuery.ajaxSetup()中将选项参数global设为false,可以禁止该AJAX请求触发全局的AJAX事件。
该函数属于jQuery对象(实例)。
语法
jQuery 1.0 新增该函数。
jQueryObject.ajaxSend( handler )
参数
| 参数 | 描述 |
|---|---|
| handler | Function类型触发该事件时,需要执行的事件处理函数。 |
回调函数handler有3个参数:其一是表示当前事件的Event对象,其二是发送当前AJAX请求的jqXHR对象,其三是包含为本次AJAX请求设置的所有参数选项(包括无需指定的默认参数选项)的Object对象。
jqXHR对象就是经过jQuery封装的XMLHttpRequest对象(保留了其大多数属性和方法)。
返回值
ajaxSend()函数的返回值为jQuery类型,返回当前jQuery对象本身。
示例&说明
请参考以下HTML示例代码:
<div id="content1">CodePlayer</div>
<div id="content2">专注于编程开发技术分享</div>
<div id="content3">http://www.365mini.com</div>
以下是与ajaxSend()函数相关的jQuery示例代码,以演示ajaxSend()函数的具体用法:
以下代码请基于1.8之前版本的jQuery来运行(请注意,通过ajaxSend()设置的全局事件处理函数与通过$.ajax()的beforeSend选项设置的局部事件处理函数,它们的参数是不同的)。
//当前 jQuery版本:1.7.2 (必须是1.8之前的版本)
$("div").ajaxSend( function(event, jqXHR, options){
alert("处理函数1: 当前元素的id为" + this.id + ",请求的url为" + options.url);
} );
$("div").ajaxSend( function(event, jqXHR, options){
alert("处理函数2:请求方式为" + options.type);
} );
// 执行该AJAX请求,会弹出6次对话框
// 因为当前页面有3个div元素,我们为每个div元素绑定了2个事件处理函数
$.ajax( {
url: "index.html"
} );
// 执行该AJAX请求,会弹出7次对话框
// 因为当前页面有3个div元素,我们为每个div元素绑定了2个事件处理函数
// 此外$.ajax()自己通过beforeSend选项绑定了一个局部的ajaxSend事件处理函数,它会执行一次
// 因此总共弹出7次对话框
$.ajax( {
url: "myurl" ,
beforeSend: function(jqXHR, options){
alert( "即将开始发送!" );
// return false; // 如果返回false,可以取消本次请求
}
} );
如果当前jQuery为1.8及以上版本,上述jQuery代码总共只会弹出一次对话框。因为从jQuery 1.8开始,ajaxSend事件的处理函数必须绑定到document对象上才能生效。
因此,不论当前jQuery为何版本,如果不是特殊需求,我们都应该将ajaxSend事件的处理函数绑定到document对象上。
$(document).ajaxSend( function(event, jqXHR, options){
alert("处理函数1: 当前元素的id为" + this.id + ",请求的url为" + options.url);
} );
$(document).ajaxSend( function(event, jqXHR, options){
alert("处理函数2:请求方式为" + options.type);
} );
// 执行该AJAX请求,会弹出2次对话框
// 因为document对象上绑定了2个事件处理函数
$.ajax( {
url: "index.html"
} );
// 执行该AJAX请求,会弹出3次对话框
// 因为$.ajax()自己通过beforeSend选项绑定了一个局部的ajaxSend事件处理函数,它会执行一次
// 我们还通过ajaxSend()额外绑定了两个事件处理函数,会再弹出2次
$.ajax( {
url: "myurl" ,
// global: false , // 可以禁止触发全局的Ajax事件
beforeSend: function(jqXHR, options){
alert( "即将开始发送!" );
// return false; // 如果返回false,可以取消本次请求
}
} );
ajax第三步的更多相关文章
- 又是一周-AJAX(三)
hi 我又食言了,但我还是厚颜无耻的回来了... 1.AJAX(三) 三.AJAX的简单的例子 3.1 简介 完成:查询员工信息,通过输入员工编号查询员工的基本信息+新建员工的信息,包含员工姓名,编号 ...
- Membership三步曲之进阶篇 - 深入剖析Provider Model
Membership 三步曲之进阶篇 - 深入剖析Provider Model 本文的目标是让每一个人都知道Provider Model 是什么,并且能灵活的在自己的项目中使用它. Membershi ...
- Membership三步曲之入门篇 - Membership基础示例
Membership 三步曲之入门篇 - Membership基础示例 Membership三步曲之入门篇 - Membership基础示例 Membership三步曲之进阶篇 - 深入剖析Pro ...
- ElasticSearch第三步-中文分词
ElasticSearch系列学习 ElasticSearch第一步-环境配置 ElasticSearch第二步-CRUD之Sense ElasticSearch第三步-中文分词 ElasticS ...
- 三步将Node应用部署到Heroku上
Heroku是一个提供快速部署服务的云平台.支持Node,Ruby,Java,PHP,Python,Go多种语言,今天体验了下,简直不要太爽.下面简单的介绍一下. 首先还是要注册一个账号:https: ...
- android 三步实现沉浸式 简单到无法想象
今天产品来看进度,说ios状态栏可以改颜色,以前竟然也没注意过,看了美团 ,扣扣的实现, 才注意到.着手开始做.网上借鉴了点 ,各种乱,整理了下 .希望可以帮到大家 . [转载请标明出处] 前提: ...
- 只需三步--轻松反编译Android Apk文件
安卓程序是通过java语言进行编写的,可以很容易进行反编译.很多apk文件被反编译后再二次打包,就成了自己的产品,很是流氓.下面我们来看看如何进行apk的反编译,以及常用的防反编译手段. 一.反编译A ...
- 轻松三步教你配置Oracle—windows环境
最近笔者在学习Oracle的时候,虽然度过了大家所说的安装难题,但是又遇到了一系列的问题,经过多方求教才知道原来是自己仅仅是安装了Oracle,却没有在环境变量中进行相应的配置.笔者也像大家遇到问题时 ...
- 用powershell+excel行列转置三步走
本文重点讲解第一步,手动在excel表中输入公式,或者用powershell自动输入公式. 第二步,用powershell向excel中写入数据,略. 第三步,用powershell从excel中读取 ...
随机推荐
- 分布式一致性算法:Raft 算法(论文翻译)
Raft 算法是可以用来替代 Paxos 算法的分布式一致性算法,而且 raft 算法比 Paxos 算法更易懂且更容易实现.本文对 raft 论文进行翻译,希望能有助于读者更方便地理解 raft 的 ...
- 《经久不衰的Spring框架:Spring+SpringMVC+MyBatis 整合》
前言 主角即Spring.SpringMVC.MyBatis,即所谓的SSM框架,大家应该也都有所了解,概念性的东西就不写了,有万能的百度.之前没有记录SSM整合的过程,这次刚刚好基于自己的一个小项目 ...
- angular : ngModel 内部流程
angular 1.5 beta link NgModelController provides API for the ngModel directive. The controller conta ...
- .net平台的rabbitmq使用封装
前言 RabbitMq大家再熟悉不过,这篇文章主要整对rabbitmq学习后封装RabbitMQ.Client的一个分享.文章最后,我会把封装组件和demo奉上. Rabbitmq的运作 从下图可以看 ...
- 完全理解Python迭代对象、迭代器、生成器
在了解Python的数据结构时,容器(container).可迭代对象(iterable).迭代器(iterator).生成器(generator).列表/集合/字典推导式(list,set,dict ...
- C#读取和写入XML文件
关于xml是属于一个比较重要的东西,在平时开发的过程中,这块内容最主要的是要掌握XML内容的读取和写入操作. 一.什么是XML? XML 指可扩展标记语言(EXtensible Markup Lang ...
- Ubuntu下安装Redis并实现远程访问
之前的一篇随笔写到Redis在Windows下的安装,但目前好多大数据处理的服务是在Linux上的,所以想以Redis为例并实现在Windows上利用C#代码远程访问. 以在Ubuntu下为例,步骤如 ...
- 【Java集合类】ArrayList详解 (JDK7)
相信对于使用过Java的人来说,ArrayList这个类大家一定不会陌生. 数据结构课上讲过, Array是数组,它能根据下标直接找到相应的地址,所以索引速度很快,但是唯一的缺点是不能动态改变数组的长 ...
- 浅谈Java的集合框架
浅谈Java的集合框架 一. 初识集合 重所周知,Java有四大集合框架群,Set.List.Queue和Map.四种集合的关注点不同,Set 关注事物的唯一性,List 关注事物的索引列表,Q ...
- AVFoundation之如何从摄像头获取图像
前言: 最近项目有个需求是对试图对手机密码进行强破解的人进行拍照(通过摄像头截图),因为之前没做过,所以一堆坑.现在就把我的经验都分享出来,希望后来人不用再踏上坑途中. 直接上代码: // 创建会话 ...