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 相关文章推荐
JavaScript 高级篇之闭包、模拟类,继承(五)
Apr 07 Javascript
js面向对象 多种创建对象方法小结
May 21 Javascript
html文档中的location对象属性理解及常见的用法
Aug 13 Javascript
jQuery中scrollTop()方法用法实例
Jan 16 Javascript
jQuery Validate验证表单时多个name相同的元素只验证第一个的解决方法
Dec 24 Javascript
ES6学习笔记之map、set与数组、对象的对比
Mar 01 Javascript
vue-cli初始化项目中使用less的方法
Aug 09 Javascript
JavaScript循环遍历你会用哪些之小结篇
Sep 28 Javascript
vue 自动化路由实现代码
Sep 03 Javascript
vue.js 子组件无法获取父组件store值的解决方式
Nov 08 Javascript
JS中FormData类实现文件上传
Mar 27 Javascript
JS制作简易计算器的实例代码
Jul 04 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也可以?成Shell Script
2006/10/09 PHP
PHP 多进程 解决难题
2009/06/22 PHP
PHP字符串函数系列之nl2br(),在字符串中的每个新行 (\n) 之前插入 HTML 换行符br
2011/11/10 PHP
php返回字符串中所有单词的方法
2015/03/09 PHP
PHP错误处理函数register_shutdown_function使用示例
2017/07/03 PHP
chrome原生方法之数组
2011/11/30 Javascript
JavaScript 5 新增 Array 方法实现介绍
2012/02/06 Javascript
两种方法实现文本框输入内容提示消失
2013/03/17 Javascript
JS判断文本框内容改变事件的简单实例
2014/03/07 Javascript
javascript中slice(),splice(),split(),substring(),substr()使用方法
2015/03/13 Javascript
JavaScript实现仿网易通行证表单验证
2015/05/25 Javascript
ECMAScript6函数剩余参数(Rest Parameters)
2015/06/12 Javascript
JQuery 的跨域方法推荐_可跨任何网站
2016/05/18 Javascript
微信小程序-详解数据缓存
2016/11/24 Javascript
Jquery on绑定的事件 触发多次实例代码
2016/12/08 Javascript
jQuery使用siblings获取某元素所有同辈(兄弟姐妹)元素用法示例
2017/01/30 Javascript
Vue.js项目部署到服务器的详细步骤
2017/07/17 Javascript
node版本管理工具n包使用教程详解
2018/11/09 Javascript
简单两步使用node发送qq邮件的方法
2019/03/01 Javascript
自定义Vue中的v-module双向绑定的实现
2019/04/17 Javascript
JavaScript定时器常见用法实例分析
2019/11/15 Javascript
vue路由缓存的几种实现方式小结
2020/02/02 Javascript
JavaScript面试中常考的字符串操作方法大全(包含ES6)
2020/05/10 Javascript
vue使用element-ui实现表单验证
2020/12/13 Vue.js
Python 文件读写操作实例详解
2014/03/12 Python
详解在Python程序中使用Cookie的教程
2015/04/30 Python
新手如何发布Python项目开源包过程详解
2019/07/11 Python
Python如何将函数值赋给变量
2020/04/28 Python
css3 伪类选择器快速复习小结
2019/09/10 HTML / CSS
ZWILLING双立人法国网上商店:德国刀具锅具厨具品牌
2019/08/28 全球购物
党员承诺书范文
2014/05/19 职场文书
八项规定整改方案
2014/10/01 职场文书
颐和园导游词
2015/01/30 职场文书
2016元旦晚会主持词
2015/07/01 职场文书
如何在python中实现ECDSA你知道吗
2021/11/23 Python
交互式可视化js库gojs使用介绍及技巧
2022/02/18 Javascript