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 相关文章推荐
node.js应用后台守护进程管理器Forever安装和使用实例
Jun 01 Javascript
wap图片滚动特效无css3元素纯js脚本编写
Aug 22 Javascript
JavaScript获取网页、浏览器、屏幕高度和宽度汇总
Dec 18 Javascript
jQuery实现hover合成事件的方法
Aug 06 Javascript
在localStorage中存储对象数组并读取的方法
Sep 24 Javascript
基于Vue实现tab栏切换内容不断实时刷新数据功能
Apr 13 Javascript
使用jQuery实现动态添加小广告
Jul 11 jQuery
Vue2.0 slot分发内容与props验证的方法
Dec 12 Javascript
利用vue + element实现表格分页和前端搜索的方法
Dec 25 Javascript
在vue项目中使用Jquery-contextmenu插件的步骤讲解
Jan 27 jQuery
微信小程序如何加载数据库真实数据的实现
Mar 04 Javascript
原生JS实现萤火虫效果
Mar 07 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
星际争霸中的热键
2020/03/04 星际争霸
PHP设计聊天室步步通
2006/10/09 PHP
PHP的PSR规范中文版
2013/09/28 PHP
PHP随机生成信用卡卡号的方法
2015/03/23 PHP
PHP实现上传图片到数据库并显示输出的方法
2018/05/31 PHP
JS OOP包机制,类创建的方法定义
2009/11/02 Javascript
JQuery select控件的相关操作实现代码
2012/09/14 Javascript
jQuery .attr()和.removeAttr()方法操作元素属性示例
2013/07/16 Javascript
JavaScript中为什么null==0为false而null大于=0为true(个人研究)
2013/09/16 Javascript
jquery 缓存问题的几个解决方法
2013/11/11 Javascript
直接在JS里创建JSON数据然后遍历使用
2014/07/25 Javascript
Jquery幻灯片特效代码分享--鼠标点击按钮时切换(1)
2015/08/15 Javascript
APP中javascript+css3实现下拉刷新效果
2016/01/27 Javascript
浅谈js键盘事件全面控制
2016/12/01 Javascript
微信小程序-获得用户输入内容
2017/02/13 Javascript
Vuex之理解state的用法实例
2017/04/19 Javascript
Vue.js实现图片的随意拖动方法
2018/03/08 Javascript
M2实现Nodejs项目自动部署的方法步骤
2019/05/05 NodeJs
Vue 中 filter 与 computed 的区别与用法解析
2019/11/21 Javascript
详解Python中dict与set的使用
2015/08/10 Python
python3+mysql查询数据并通过邮件群发excel附件
2018/02/24 Python
Python版名片管理系统
2018/11/30 Python
解决pycharm回车之后不能换行或不能缩进的问题
2019/01/16 Python
基于pycharm实现批量修改变量名
2020/06/02 Python
vscode+PyQt5安装详解步骤
2020/08/12 Python
python palywright库基本使用
2021/01/21 Python
HTML5的Video标签有部分MP4无法播放的问题解析(多图)
2017/08/18 HTML / CSS
校运会广播稿100字
2014/01/27 职场文书
可贵的沉默教学反思
2014/02/06 职场文书
保护母亲河倡议书
2014/04/14 职场文书
小班下学期评语
2014/05/04 职场文书
诉讼财产保全担保书
2014/05/20 职场文书
教师求职简历自我评价
2015/03/10 职场文书
九九重阳节致辞
2015/07/31 职场文书
浅谈pytorch中stack和cat的及to_tensor的坑
2021/05/20 Python
Python+Appium自动化测试的实战
2021/06/30 Python