jQuery实现监控页面所有ajax请求的方法


Posted in Javascript onDecember 10, 2015

本文实例讲述了jQuery实现监控页面所有ajax请求的方法。分享给大家供大家参考,具体如下:

你是不是有遇到这样的问题:页面发起两个ajax请求,希望它们都成功以后,再做一个动作?

很容易想到的解决方案是,等其中一个结束以后,再发起另外一个,这个过程用回调函数来完成。

但是,如果其中一个ajax请求的代码不是你写,你改不了,怎么办?

又或者说,你只想知道某个url请求什么时候结束,不想管其他的请求,怎么弄?

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
  </head>
  <body>
    <p id="test"></p>
  </body>
  <script src="js/jquery-1.11.0.min.js"></script>
  <!--首先在页面引入jquery的后面,紧接着以下代码:-->
  <script>
    //前提:所有ajax请求都是用jquery的$.ajax发起的,而非原生的XHR;
    var ajaxBack = $.ajax;
    var ajaxCount = 0;
    var allAjaxDone = function(){$('#test').append('all done!<br>');} //一行代码,就可以知道所有ajax请求什么时候结束
    //由于get/post/getJSON等,最后还是调用到ajax,因此只要改ajax函数即可
    $.ajax = function(setting){
      ajaxCount++;
      var cb = setting.complete;
      setting.complete = function(){
        if($.isFunction(cb)){cb.apply(setting.context, arguments);}
        ajaxCount--;
        if(ajaxCount==0 && $.isFunction(allAjaxDone)){
          allAjaxDone();
        }
      }
      ajaxBack(setting);
    }
  </script>
  <!--以下是别人的script-->
  <script>
    $.ajax({url: 'js/jquery-1.11.0.min.js', success: function(recv){$('#test').append('别人的ajax请求1,done<br>')}});
  </script>
  <script>
    $.get('css/main.css', null, function(recv){$('#test').append('别人的get请求,done<br>')});
  </script>
  <script>
    $.post('css/main.css', null, function(recv){$('#test').append('别人的post请求,done<br>')});
  </script>
</html>

其他的相关函数:

$.ajax 中:

error:当出错时调用,可以用来上报错误的请求。
complete:无论成功还是失败都会调用

高版本中:

$.promise
$.when

希望本文所述对大家jQuery程序设计有所帮助。

Javascript 相关文章推荐
Jvascript学习实践案例(开发常用)
Jun 25 Javascript
javascript为下拉列表动态添加数据项
May 23 Javascript
javascript实现跨域的方法汇总
Jun 25 Javascript
js仿黑客帝国字母掉落效果代码分享
Nov 08 Javascript
jQuery+CSS实现一个侧滑导航菜单代码
May 09 Javascript
JS获取鼠标选中的文字
Aug 10 Javascript
微信小程序 网络API 上传、下载详解
Nov 09 Javascript
AngularJS模仿Form表单提交的实现代码
Dec 08 Javascript
用Vue-cli搭建的项目中引入css报错的原因分析
Jul 20 Javascript
JavaScript设计模式之装饰者模式定义与应用示例
Jul 25 Javascript
vue中promise的使用及异步请求数据的方法
Nov 08 Javascript
React中阻止事件冒泡的问题详析
Apr 12 Javascript
js表单提交和submit提交的区别实例分析
Dec 10 #Javascript
浅谈javascript中onbeforeunload与onunload事件
Dec 10 #Javascript
详解JavaScript基于面向对象之创建对象(2)
Dec 10 #Javascript
JS提交form表单实例分析
Dec 10 #Javascript
详解JavaScript基于面向对象之创建对象(1)
Dec 10 #Javascript
AngularJs实现ng1.3+表单验证
Dec 10 #Javascript
理解AngularJs指令
Dec 10 #Javascript
You might like
php 计算两个时间戳相隔的时间的函数(小时)
2009/12/18 PHP
php实现将上传word文件转为html的方法
2015/06/03 PHP
php smtp实现发送邮件功能
2017/06/22 PHP
php+jQuery实现的三级导航栏下拉菜单显示效果
2017/08/10 PHP
js 兼容多浏览器的回车和鼠标焦点事件代码(IE6/7/8,firefox,chrome)
2010/04/14 Javascript
jquery可见性过滤选择器使用示例
2013/06/24 Javascript
jQuery使用prepend()方法在元素前添加内容用法实例
2015/03/26 Javascript
举例说明JavaScript中的实例对象与原型对象
2016/03/11 Javascript
javascript获取select标签选中的值
2016/06/04 Javascript
解决JS内存泄露之js对象和dom对象互相引用问题
2017/06/25 Javascript
Grunt针对静态文件的压缩,版本控制打包的实例讲解
2017/09/29 Javascript
Express进阶之log4js实用入门指南
2018/02/10 Javascript
centos 上快速搭建ghost博客方法分享
2018/05/23 Javascript
vue实现组件之间传值功能示例
2018/07/13 Javascript
深入探索VueJS Scoped CSS 实现原理
2019/09/23 Javascript
vue@cli3项目模板怎么使用public目录下的静态文件
2020/07/07 Javascript
vue-model实现简易计算器
2020/08/17 Javascript
[51:44]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第二场
2018/04/04 DOTA
[47:04]LGD vs infamous Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
Python中生成器和yield语句的用法详解
2015/04/17 Python
在Django的通用视图中处理Context的方法
2015/07/21 Python
Python GUI Tkinter简单实现个性签名设计
2018/06/19 Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
2019/08/04 Python
python 爬取学信网登录页面的例子
2019/08/13 Python
python SocketServer源码深入解读
2019/09/17 Python
Tensorflow分批量读取数据教程
2020/02/07 Python
Python模块/包/库安装的六种方法及区别
2020/02/24 Python
使用keras框架cnn+ctc_loss识别不定长字符图片操作
2020/06/29 Python
Python实现像awk一样分割字符串
2020/09/15 Python
基于Python采集爬取微信公众号历史数据
2020/11/27 Python
CSS3支持IE6, 7, and 8的边框border属性
2012/12/28 HTML / CSS
结合CSS3的布局新特征谈谈常见布局方法
2016/01/22 HTML / CSS
荷兰网上买鞋:MooieSchoenen.nl
2017/09/12 全球购物
体育节口号
2014/06/19 职场文书
DBCA命令行搭建Oracle ADG的流程
2021/06/11 Oracle
mysql下的max_allowed_packet参数设置详解
2022/02/12 MySQL