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 相关文章推荐
高效的表格行背景隔行变色及选定高亮的JS代码
Dec 04 Javascript
js实现的后台左侧管理菜单代码
Sep 11 Javascript
jQuery插件WebUploader实现文件上传
Nov 07 Javascript
Jquery uploadify 多余的Get请求(404错误)的解决方法
Jan 26 Javascript
jQuery实现的下雪动画效果示例【附源码下载】
Feb 02 jQuery
原生js调用json方法总结
Feb 22 Javascript
微信小程序自定义prompt组件步骤详解
Jun 12 Javascript
浅谈 Webpack 如何处理图片(开发、打包、优化)
May 15 Javascript
详解mpvue实现对苹果X安全区域的适配
Jul 31 Javascript
关于layui 实现点击按钮添加一行(方法渲染创建的table)
Sep 29 Javascript
JavaScript实现简单日历效果
Sep 11 Javascript
js实现特别简单的钟表效果
Sep 14 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
PHP3 safe_mode 失效漏洞
2006/10/09 PHP
PHP实现SMTP邮件的发送实例
2018/09/27 PHP
laravel 关联关系遍历数组的例子
2019/10/10 PHP
Laravel 创建可以传递参数 Console服务的例子
2019/10/14 PHP
JavaScript 验证浏览器是否支持javascript的方法小结
2009/05/17 Javascript
JavaScript 学习初步 入门教程
2010/03/25 Javascript
Angularjs中如何使用filterFilter函数过滤
2016/02/06 Javascript
微信小程序 for 循环详解
2016/10/09 Javascript
Bootstrap免费字体和图标网站(值得收藏)
2017/03/16 Javascript
浅谈JS获取元素的N种方法及其动静态讨论
2017/08/25 Javascript
vue+Java后端进行调试时解决跨域问题的方式
2017/10/19 Javascript
Angular4绑定html内容出现警告的处理方法
2017/11/03 Javascript
sublime text配置node.js调试(图文教程)
2017/11/23 Javascript
vue+element-ui动态生成多级表头的方法
2018/08/28 Javascript
vuedraggable+element ui实现页面控件拖拽排序效果
2020/07/29 Javascript
解决vue cli使用typescript后打包巨慢的问题
2019/09/30 Javascript
vue element upload组件 file-list的动态绑定实现
2019/10/11 Javascript
Vue axios获取token临时令牌封装案例
2020/09/11 Javascript
[44:41]Fnatic vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python3操作SQL Server数据库(实例讲解)
2017/10/21 Python
Python实现翻转数组功能示例
2018/01/12 Python
python获取命令行输入参数列表的实例代码
2018/06/23 Python
对Python random模块打乱数组顺序的实例讲解
2018/11/08 Python
Python Django 命名空间模式的实现
2019/08/09 Python
解决使用export_graphviz可视化树报错的问题
2019/08/09 Python
pandas 缺失值与空值处理的实现方法
2019/10/12 Python
Python集成开发工具Pycharm的安装和使用详解
2020/03/18 Python
css3一款3D字体带阴影效果的实现步骤
2013/03/20 HTML / CSS
css3实现简单的白云飘动背景特效
2020/10/28 HTML / CSS
韩国三大免税店之一:THE GRAND 中文免税店
2016/07/21 全球购物
公司捐款倡议书
2014/05/14 职场文书
大学毕业生求职自荐书
2014/06/05 职场文书
聋哑人盗窃罪辩护词
2015/05/21 职场文书
办公室管理规章制度
2015/08/04 职场文书
微软Win11什么功能最惊艳? Windows11新功能特性汇总
2021/11/21 数码科技
Python如何用re模块实现简易tokenizer
2022/05/02 Python