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 相关文章推荐
一实用的实现table排序的Javascript类库
Sep 12 Javascript
javascript 窗口加载蒙板 内嵌网页内容
Nov 19 Javascript
jquery打开直接跳到网页最下面、最低端实现代码
Apr 22 Javascript
js浮点数精确计算(加、减、乘、除)
Dec 26 Javascript
jquery实现可拖拽弹出层特效
Jan 04 Javascript
JavaScript实现页面无操作倒计时退出
Oct 22 Javascript
jQuery实现ajax回调函数带入参数的方法示例
Jun 26 jQuery
React Component存在的几种形式详解
Nov 06 Javascript
JavaScript setTimeout()基本用法有哪些
Nov 04 Javascript
js实现移动端轮播图滑动切换
Dec 21 Javascript
jenkins自动构建发布vue项目的方法步骤
Jan 04 Vue.js
如何制作自己的原生JavaScript路由
May 05 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使用递归方式列出当前目录下所有文件的方法
2015/06/02 PHP
PHP之认识(二)关于Traits的用法详解
2019/04/11 PHP
javascript与webservice的通信实现代码
2010/12/25 Javascript
jQuery通过控制节点实现仅在前台通过get方法完成参数传递
2015/02/02 Javascript
jquery简单实现外部链接用新窗口打开的方法
2015/05/30 Javascript
jQuery切换所有复选框选中状态的方法
2015/07/02 Javascript
jQuery插件开发精品教程让你的jQuery提升一个台阶
2016/01/27 Javascript
理解javascript正则表达式
2016/03/08 Javascript
利用JavaScript判断浏览器类型及版本
2016/08/23 Javascript
Angular中使用ui router实现系统权限控制及开发遇到问题
2016/09/23 Javascript
JS中实现函数return多个返回值的实例
2017/02/21 Javascript
详解Node.js实现301、302重定向服务
2017/04/07 Javascript
React Native之TextInput组件解析示例
2017/08/22 Javascript
深入理解ES6 Promise 扩展always方法
2017/09/26 Javascript
详解Webpack实战之构建 Electron 应用
2017/12/25 Javascript
JavaScript递归函数解“汉诺塔”算法代码解析
2018/07/05 Javascript
JavaScript实现打砖块游戏
2020/02/25 Javascript
微信小程序开发搜索功能实现(前端+后端+数据库)
2020/03/04 Javascript
python base64 decode incorrect padding错误解决方法
2015/01/08 Python
Pytorch转keras的有效方法,以FlowNet为例讲解
2020/05/26 Python
快速了解Python开发环境Spyder
2020/06/29 Python
selenium自动化测试入门实战
2020/12/21 Python
日本亚马逊官方网站:Amazon.co.jp
2020/04/14 全球购物
简述使用ftp进行文件传输时的两种登录方式?它们的区别是什么?常用的ftp文件传输命令是什么?
2016/11/20 面试题
大学校运会广播稿
2014/02/03 职场文书
工程造价专业大学生职业规划范文
2014/03/09 职场文书
毕业典礼演讲稿
2014/05/13 职场文书
企业文化标语口号
2014/06/09 职场文书
民主生活会剖析材料
2014/09/30 职场文书
单位工作证明
2014/10/07 职场文书
教师党员批评与自我批评
2014/10/15 职场文书
2014财产信托协议书范本
2014/11/18 职场文书
有限责任公司股东合作协议书
2014/12/02 职场文书
go 原生http web 服务跨域restful api的写法介绍
2021/04/27 Golang
使用react-virtualized实现图片动态高度长列表的问题
2021/05/28 Javascript
前端JS获取URL参数的4种方法总结
2022/04/05 Javascript