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 相关文章推荐
基于Jquery插件开发之图片放大镜效果(仿淘宝)
Nov 19 Javascript
一个简单的动态加载js和css的jquery代码
Sep 01 Javascript
js中数组排序sort方法的原理分析
Nov 20 Javascript
深入理解js promise chain
May 05 Javascript
js 创建对象 经典模式全面了解
Aug 16 Javascript
AngularJS 与百度地图的结合实例
Oct 20 Javascript
js实现上传图片预览方法
Oct 25 Javascript
详解微信小程序 页面跳转 传递参数
Dec 08 Javascript
JS实现HTML标签转义及反转义
Apr 14 Javascript
javascript中函数的写法实例代码详解
Oct 28 Javascript
vue单文件组件无法获取$refs的问题
Jun 24 Javascript
详解JavaScript的计时器和按钮效果设置
Feb 18 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 中英文混合排版中处理字符串常用的函数
2007/04/12 PHP
PHP基于DOM创建xml文档的方法示例
2017/02/08 PHP
PHP实现的大文件切割与合并功能示例
2018/04/10 PHP
juqery 学习之三 选择器 子元素与表单
2010/11/25 Javascript
基于Jquery的跨域传输数据(JSONP)
2011/03/10 Javascript
a标签的href和onclick 的事件的区别介绍
2013/07/26 Javascript
JQuery插件fancybox无法在弹出层使用左右键的解决办法
2013/12/25 Javascript
JavaScript分页功能的实现方法
2015/04/25 Javascript
jQuery实现的多级下拉菜单效果代码
2015/08/24 Javascript
瀑布流的实现方式(原生js+jquery+css3)
2020/06/28 Javascript
vue-cli如何快速构建vue项目
2017/04/26 Javascript
JavaScript实现兼容IE6的收起折叠与展开效果实例
2017/09/20 Javascript
vue的安装及element组件的安装方法
2018/03/09 Javascript
vue2使用keep-alive缓存多层列表页的方法
2018/09/21 Javascript
实现elementUI表单的全局验证的方法步骤
2019/04/29 Javascript
Python的Flask框架中的Jinja2模板引擎学习教程
2016/06/30 Python
pandas groupby 分组取每组的前几行记录方法
2018/04/20 Python
Django2.1集成xadmin管理后台所遇到的错误集锦(填坑)
2018/12/20 Python
Django 开发调试工具 Django-debug-toolbar使用详解
2019/07/23 Python
Django多数据库的实现过程详解
2019/08/01 Python
Python上下文管理器用法及实例解析
2019/11/11 Python
从pandas一个单元格的字符串中提取字符串方式
2019/12/17 Python
Python+pyftpdlib实现局域网文件互传
2020/08/24 Python
Boden澳大利亚官网:英国在线服装公司
2018/08/05 全球购物
新西兰网上购物,折扣店:BestDeals.co.nz
2019/03/20 全球购物
Stokke美国官方网店:高级儿童家具、推车、汽车座椅和配件
2020/06/06 全球购物
公司清洁工岗位职责
2013/12/14 职场文书
摄影助理岗位职责
2014/02/07 职场文书
医药销售自荐书
2014/05/29 职场文书
技术负责人岗位职责
2015/02/10 职场文书
广告业务员岗位职责
2015/02/13 职场文书
经理聘任证明
2015/03/02 职场文书
创业计划书之外语培训班
2019/11/02 职场文书
浅谈Python列表嵌套字典转化的问题
2021/04/07 Python
用python画城市轮播地图
2021/05/28 Python
利用 SQL Server 过滤索引提高查询语句的性能分析
2021/07/15 SQL Server