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性能陷阱小结(附实例说明)
Dec 28 Javascript
仅IE6/7/8中innerHTML返回值忽略英文空格的问题
Apr 07 Javascript
js将long日期格式转换为标准日期格式实现思路
Apr 07 Javascript
百度UEditor编辑器如何关闭抓取远程图片功能
Mar 03 Javascript
前端性能优化及技巧
May 06 Javascript
AngularJS 视图详解及示例代码
Aug 17 Javascript
微信小程序技巧之show内容展示,上传文件编码问题
Jan 23 Javascript
vue代理和跨域问题的解决
Jul 18 Javascript
微信小程序onLaunch异步,首页onLoad先执行?
Sep 20 Javascript
详解javascript 变量提升(Hoisting)
Mar 12 Javascript
微信小程序分包加载代码实现方法详解
Sep 23 Javascript
react项目从新建到部署的实现示例
Feb 19 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对MongoDB[NoSQL]数据库的操作
2013/03/01 PHP
浅谈PHP变量作用域以及地址引用问题
2013/12/27 PHP
PHP进行批量任务处理不超时的解决方法
2016/07/11 PHP
php操作redis命令及代码实例大全
2020/11/19 PHP
PHP实现长轮询消息实时推送功能代码实例讲解
2021/02/26 PHP
JS替换字符串中字符即替换全部而不是第一个
2014/06/04 Javascript
JS实现很实用的对联广告代码(可自适应高度)
2015/09/18 Javascript
javascript下使用Promise封装FileReader
2016/02/19 Javascript
JS+HTML5实现的前端购物车功能插件实例【附demo源码下载】
2016/10/17 Javascript
underscore之Chaining_动力节点Java学院整理
2017/07/10 Javascript
js实现图片懒加载效果
2017/07/17 Javascript
基于jquery实现多选下拉列表
2017/08/02 jQuery
微信小程序实现顶部下拉菜单栏
2018/11/04 Javascript
Vue组件通信的几种实现方法
2019/04/25 Javascript
在Python中操作列表之List.append()方法的使用
2015/05/20 Python
Python2.x版本中基本的中文编码问题解决
2015/10/12 Python
Django rest framework基本介绍与代码示例
2018/01/26 Python
Python3 XML 获取雅虎天气的实现方法
2018/02/01 Python
python_opencv用线段画封闭矩形的实例
2018/12/05 Python
解决python打不开文件(文件不存在)的问题
2019/02/18 Python
python读取并定位excel数据坐标系详解
2019/06/26 Python
使用pip安装python库的多种方式
2019/07/31 Python
Python实现网页截图(PyQT5)过程解析
2019/08/12 Python
简单了解python元组tuple相关原理
2019/12/02 Python
python爬虫添加请求头代码实例
2019/12/28 Python
python递归函数用法详解
2020/10/26 Python
利用纯html5绘制出来的一款非常漂亮的时钟
2015/01/04 HTML / CSS
英国美术用品购物网站:Cass Art
2019/10/08 全球购物
美国木工工具和用品商店:Woodcraft
2019/10/30 全球购物
大学新生军训自我鉴定
2014/03/18 职场文书
学校出纳员岗位职责
2014/03/18 职场文书
新学期国旗下演讲稿
2014/05/08 职场文书
酒店爱岗敬业演讲稿
2014/09/02 职场文书
2014年导购员工作总结
2014/11/18 职场文书
自我工作评价范文
2015/03/06 职场文书
MySQL获取所有分类的前N条记录
2021/05/07 MySQL