这是一个全局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示例代码:
f4dba444dcf7796a4ab7fcfee01b41ddcodeplayer16b28748ea4df4d9c2150843fecfba68
c3c066d1dcbba86ad63364122a756966专注于编程开发技术分享16b28748ea4df4d9c2150843fecfba68
d810455a7c88c63311ef470b0503c217http://www.365mini.com16b28748ea4df4d9c2150843fecfba68
以下是与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,可以取消本次请求 } } );
以上就是详细介绍jquery.ajaxsend()函数的使用的详细内容。
