定义
所谓的钩子函数就是和异步程序相互挂钩,异步程序执行到不同步骤不同状态时触发的函数程序。
语法
$(window).ajaxStart( 函数程序 ) | 在所有Ajax程序触发之前执行,多个Ajax程序只会执行一次 |
$(window).ajaxSend( 函数程序 ) | 在每个Ajax程序发送之前执行,多个Ajax程序触发多次执行 |
$(window).ajaxSuccess( 函数程序 ) | 在每个Ajax程序发送成功之后执行,多个Ajax程序触发执行多次 |
$(window).ajaxError( 函数程序 ) | 在每个Ajax程序发送失败之后执行,多个Ajax程序触发执行多次 |
$(window).ajaxComplete( 函数程序 ) | 在每个Ajax程序发送结束之后执行,多个Ajax程序触发执行多次 |
$(window).ajaxStop( 函数程序 ) | 在每个Ajax程序请求结束之后执行,多个Ajax程序触发执行一次 |
演示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
img{
display: none;
}
</style>
</head>
<body>
<button>请求</button><br>
<img src="./1.gif" alt="">
<script src="./jquery.min.js"></script>
<script>
// 钩子函数的设定
$(window).ajaxStart(function(){
// 所有请求开始 让 图片显示
$('img').css({display : 'block'});
})
$(window).ajaxStop(function(){
// 所有请求结束 让 图片隐藏
$('img').css({display : 'none'});
})
$('button').click(function(){
// 第一个请求
$.ajax({
url:'http://localhost:8888/test/second',
type:'get',
success:function(response){ console.log( response ) }
})
// 第二个请求
$.ajax({
url:'http://lohost:8888/test/third',
type:'get',
data:{name:'张三' , age:18} ,
success:function(response){ console.log( response ) }
})
// 第三个请求
$.ajax({
url:'http://localhost:8888/test/fourth',
type:'post',
data:{name:'李四' , age:50} ,
success:function(response){ console.log( response ) }
})
})
</script>
</body>
</html>
这里故意将第三个请求写错,让大家能更多地看到钩子函数的过程。
运行结果