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 相关文章推荐
Node.js实战 建立简单的Web服务器
Mar 08 Javascript
JavaScript中数据结构与算法(三):链表
Jun 19 Javascript
基于Jquery实现焦点图淡出淡入效果
Nov 30 Javascript
ES6新特性之数组、Math和扩展操作符用法示例
Apr 01 Javascript
Vue-cli创建项目从单页面到多页面的方法
Sep 20 Javascript
JS弹窗 JS弹出DIV并使整个页面背景变暗功能的实现代码
Apr 21 Javascript
小程序兼容安卓和IOS数据处理问题及坑
Sep 18 Javascript
JQuery中的常用事件、对象属性与使用方法分析
Dec 23 jQuery
React实现类似淘宝tab居中切换效果的示例代码
Jun 02 Javascript
Ajax实现三级联动效果
Oct 05 Javascript
JS创建或填充任意长度数组的小技巧汇总
Oct 24 Javascript
JS前端监控采集用户行为的N种姿势
Jul 23 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时间戳格式全部汇总 (获取时间、时间戳)
2016/06/13 PHP
Add Formatted Text to a Word Document
2007/06/15 Javascript
jQuery 1.2.x 升? 1.3.x 注意事项
2009/05/06 Javascript
关于COOKIE个数与大小的问题
2011/01/17 Javascript
分享一个用Mootools写的鼠标滑过进度条改变进度值的实现代码
2011/12/12 Javascript
JS获取下拉框显示值和判断单选按钮的方法
2015/07/09 Javascript
jquery validate demo 基础
2015/10/29 Javascript
JavaScript资源预加载组件和滑屏组件的使用推荐
2016/03/10 Javascript
Javascript基础知识盲点总结之函数
2016/05/15 Javascript
JSONP和批量操作功能的实现方法
2016/08/21 Javascript
AngularJS使用ng-options指令实现下拉框
2016/08/23 Javascript
jQuery Form表单取值的方法
2017/01/11 Javascript
JS实现旋转木马式图片轮播效果
2017/01/18 Javascript
微信小程序技巧之show内容展示,上传文件编码问题
2017/01/23 Javascript
详解JS中遍历语法的比较
2017/04/07 Javascript
js学习心得_一个简单的动画库封装tween.js
2017/07/14 Javascript
原生js实现简单的模态框示例
2017/09/08 Javascript
通过vue提供的keep-alive减少对服务器的请求次数
2018/04/01 Javascript
为什么要使用Vuex的介绍
2019/01/19 Javascript
vue中动态select的使用方法示例
2019/10/28 Javascript
vue vant Area组件使用详解
2019/12/09 Javascript
vue中音频wavesurfer.js的使用方法
2020/02/20 Vue.js
详解VUE中的插值( Interpolation)语法
2020/10/18 Javascript
详解ES6实现类的私有变量的几种写法
2021/02/10 Javascript
Python网络编程中urllib2模块的用法总结
2016/07/12 Python
Python爬虫爬取美剧网站的实现代码
2016/09/03 Python
python删除某个字符
2018/03/19 Python
python获取url的返回信息方法
2018/12/17 Python
pycharm无法导入本地模块的解决方式
2020/02/12 Python
Python IDLE或shell中切换路径的操作
2020/03/09 Python
python异常处理之try finally不报错的原因
2020/05/18 Python
师范应届生教师求职信
2013/11/05 职场文书
教师旷工检讨书
2014/01/18 职场文书
创业计划书的写作技巧及要点
2014/01/31 职场文书
团代会宣传工作方案
2014/05/08 职场文书
开会通知短信大全
2015/04/20 职场文书