1 $(function(){ 2 ????//设置全局 jQuery Ajax全局参数 3 ????$.ajaxSetup({ 4 ????????type:"POST", 5 ????????async:false, 6 ????????cache:false, 7 ????????dataType:"JSON", 8 ????????error:function(jqXHR,textStatus,errorThrown){ 9 ????????????switch(jqXHR.status){10 ????????????????case(500):11 ????????????????????alert(‘服务器系统内部错误‘);12 ????????????????????break;13 ????????????????case(401):14 ????????????????????alert(‘未登录‘);15 ????????????????????break;16 ????????????????case(403): ?17 ????????????????????alert("无权限执行此操作"); ?18 ????????????????????break; ?19 ????????????????case(408): ?20 ????????????????????alert("请求超时"); ?21 ????????????????????break; ?22 ????????????????default: ?23 ????????????????????alert("未知错误");24 ????????????}25 ????????},26 ????????success:function(data){27 ????????????alert(‘操作成功!‘);28 ????????}29 ????})30 })
当设置该属性后,在其他jQuery没有设置的ajax中,默认使用该设置。
.ajaxStart()
在ajax请求刚开始时执行一个处理函数。
每当一个ajax请求即将发送,jQuery检查是否有任何其他响应过程中的ajax请求(注:未完成的请求)。如果没有检查到,jQuery就会触发ajaxStart事件,在这个时间点所有处理函数都会使用.ajaxStart()方法注册并执行。
请注意以下代码的执行结果:
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title><script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script></head><body><div class="trigger">Trigger</div><div class="result"></div><div class="log"></div><script>$(document).ajaxStart(function(){$(‘.log‘).text("Trigger ajaxStart handler.");console.log(1);});$(‘.trigger‘).click(function(e){ ???????????console.log(2);$(‘.result‘).load(‘ajax/test.html‘);});$(document).ajaxSuccess(function(e){ ???????????console.log(31); ???????});$(function(){//设置全局 jQuery Ajax全局参数$.ajaxSetup({type:"POST",async:false,cache:false,dataType:"JSON",beforeSend:function(){ ?console.log(4)},error:function(jqXHR,textStatus,errorThrown) { ???????????switch (jqXHR.status) { ???????????????case(500): ???????????????????alert(‘服务器系统内部错误‘); ???????????????????break; ???????????????case(401): ???????????????????alert(‘未登录‘); ???????????????????break; ???????????????case(403): ???????????????????alert("无权限执行此操作"); ???????????????????break; ???????????????case(408): ???????????????????alert("请求超时"); ???????????????????break; ???????????????case(404): ???????????????????alert(‘地址错误‘); ???????????????????break; ???????????????default: ???????????????????alert("未知错误"); ???????????}},success:function(data){//alert(‘操作成功!‘);console.log(3);}})})</script></body></html>
运行结果:
也就是说方法调用顺序如下:
ajax请求代码之前的代码
ajaxStart
beforeSend
success
ajaxSuccess
https://blog.csdn.net/zhao1949/article/details/52787124
jQuery中各个事件的执行顺序如下:
1.ajaxStart (全局事件)
2.beforeSend
3.success
4.ajaxSuccess
5.error
6.ajaxError (全局事件)
7.complete
8.complete
9.ajaxComplete (全局事件)
10.ajaxStop (全局事件)
先执行success,再执行error???,最后始终执行complete
区别是:
success:当请求成功时调用函数,即status==200
complete:当请求完成时调用函数,即status==404、403、302……只要不出错就行。
因为通常我们需要用来清理资源,所以就设计成complete在success之后执行。
ajax设置默认值ajaxSetup()方法
原文地址:https://www.cnblogs.com/em2464/p/10304449.html