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 相关文章推荐
Span元素的width属性无效果原因及解决方案
Jan 15 Javascript
JS for循环中i++ 和 ++i的区别介绍
Jul 20 Javascript
微信小程序 在Chrome浏览器上运行以及WebStorm的使用
Sep 27 Javascript
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
Dec 14 Javascript
addeventlistener监听scroll跟touch(实例讲解)
Aug 04 Javascript
Bootstrap框架建立树形菜单(Tree)的实例代码
Oct 30 Javascript
JavaScript中工厂函数与构造函数示例详解
May 06 Javascript
JavaScript Array对象使用方法解析
Sep 24 Javascript
Vue 开发必须知道的36个技巧(小结)
Oct 09 Javascript
关于vue路由缓存清除在main.js中的设置
Nov 06 Javascript
解决新建一个vue项目过程中遇到的问题
Oct 22 Javascript
vue实现滑动解锁功能
Mar 03 Vue.js
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变量引用的面试题
2010/08/08 PHP
yii框架通过控制台命令创建定时任务示例
2014/04/30 PHP
javascript 混合的构造函数和原型方式,动态原型方式
2009/12/07 Javascript
用js模拟JQuery的show与hide动画函数代码
2010/09/20 Javascript
idTabs基于JQuery的根据URL参数选择Tab插件
2012/04/11 Javascript
文本框只能选择数据到文本框禁止手动输入
2013/11/22 Javascript
解决jquery中美元符号命名冲突问题
2014/01/08 Javascript
防止Node.js中错误导致进程阻塞的办法
2016/08/11 Javascript
基于cssSlidy.js插件实现响应式手机图片轮播效果
2016/08/30 Javascript
AngularJS中的作用域实例分析
2018/05/16 Javascript
vue.js实现的经典计算器/科学计算器功能示例
2018/07/11 Javascript
详解vue-cli 3.0 build包太大导致首屏过长的解决方案
2018/11/10 Javascript
基于vue.js组件实现分页效果
2018/12/29 Javascript
微信小程序webview 脚手架使用详解
2019/07/22 Javascript
js实现列表向上无限滚动
2020/01/13 Javascript
在Vue中使用Echarts可视化库的完整步骤记录
2020/11/18 Vue.js
[51:06]2018DOTA2亚洲邀请赛3月29日 小组赛A组 KG VS Liquid
2018/03/30 DOTA
[57:37]EG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[01:10:27]DOTA2-DPC中国联赛正赛 SAG vs XG BO3 第二场 3月5日
2021/03/11 DOTA
探寻python多线程ctrl+c退出问题解决方案
2014/10/23 Python
python判断图片宽度和高度后删除图片的方法
2015/05/22 Python
用生成器来改写直接返回列表的函数方法
2017/05/25 Python
对Python3.x版本print函数左右对齐详解
2018/12/22 Python
使用tensorboard可视化loss和acc的实例
2020/01/21 Python
什么是python的函数体
2020/06/19 Python
python实现发送带附件的邮件代码分享
2020/09/22 Python
CSS3之背景尺寸Background-size使用介绍
2013/10/14 HTML / CSS
HTML利用九宫格原理进行网页布局
2020/03/13 HTML / CSS
阿联酋最好的手机、电子产品和家用电器网上商店:Eros Digital Home
2020/08/09 全球购物
大学生英语演讲稿
2014/04/24 职场文书
房屋买卖协议书范本
2014/09/27 职场文书
夫妻分居协议书范本(有子女版)
2014/11/01 职场文书
2015学校六五普法工作总结
2015/04/22 职场文书
中学教师读书笔记
2015/07/01 职场文书
Django使用channels + websocket打造在线聊天室
2021/05/20 Python
SQL CASE 表达式的具体使用
2022/03/21 SQL Server