ajax全局事件
作用:当你的页面存在很多ajax事件的话,我们有一些信息是公共的,可以复用,我们可以用全局事件进行编写,因为每一个ajax事件调用,都会触发ajax全局事件。
jquery的ajax方法的全部全局事件:
ajaxStart:ajax请求开始前
ajaxSend:ajax请求时
ajaxSuccess:ajax获取数据后
ajaxError:ajax请求发生错误后
ajaxComplete:ajax请求完成时
ajaxStop:ajax请求停止后
不使用全局事件的做法是:给单个ajax加一个global:false;
1.ajaxStart
ajaxStart()方法:每当一个Ajax请求即将发送,jQuery检查是否有任何其他响应过程中的Ajax请求(注:未完成的请求)。如果没有检查到,jQuery就会触发ajaxStart
事件,在这个时间点所有处理函数都会使用.ajaxStart()
方法注册并执行。如果global
选项设置为false
,调用$.ajax()
或$.ajaxStep()
方法将不会被触发。
$(document).ajaxStart(function() { $( "#loading" ).show();//等待画面 });
2.ajaxSend
.ajaxSend()方法:每当一个Ajax请求即将发送,jQuery就会触发ajaxSend
事件,在这个时间点所有处理函数都会使用.ajaxSend()
方法注册并执行。如果global
选项设置为false
,调用$.ajax()
或$.ajaxStep()
方法将不会被触发。
$(document).ajaxSend(function(event, request, settings) { $( "#msg" ).append( "<li>Starting request at " + settings.url + "</li>" ); });
3.ajaxSuccess
.ajaxSuccess()方法:每当一个Ajax请求成功完成,jQuery就会触发ajaxSuccess
事件,在这个时间点所有处理函数都会使用.ajaxSuccess()
方法注册并执行。如果global
选项设置为false
,调用$.ajax()
或$.ajaxStep()
方法将不会被触发。
$(document).ajaxSuccess(function(event, request, settings) { $( "#msg" ).append( "<li>Successful Request!</li>" ); });
4.ajaxError
.ajaxError()方法:每当一个Ajax请求出错时,jQuery就会触发ajaxError
事件,在这个时间点所有处理函数会使用.ajaxError()
方法注册并执行。如果global
选项设置为false
,调用$.ajax()
或$.ajaxStep()
方法将不会被触发。
$(document).ajaxError(function(event, request, settings) { $( "#msg" ).append( "<li>Error requesting page " + settings.url + "</li>" ); });
5.ajaxComplete
.ajaxComplete()方法:每当一个Ajax请求完成,jQuery就会触发ajaxComplete
事件,在这个时间点所有处理函数会使用.ajaxComplete()
方法注册并执行。如果global属性被设置为false,当完成Ajax请求后不会调用这个方法。
$(document).ajaxComplete(function(event,request, settings) { $( "#msg" ).append( "<li>请求完成。</li>" ); });
6.ajaxStop
.ajaxStop()方法:每当一个Ajax请求完成,jQuery检查是否有任何其他响应过程中的Ajax请求(注:未完成的请求)。如果都执行完成,jQuery就会触发ajaxStop
事件,在这个时间点所有处理函数都会使用.ajaxStop()
方法注册并执行。如果一个未处理完成的Ajax请求用beforeSend
回调函数返回false
取消,ajaxStop
事件也被触发。如果global
选项设置为false
,调用$.ajax()
或$.ajaxStep()
方法将不会被触发。
$(document).ajaxStop(function() { $( "#loading" ).hide(); });ajax