zoukankan      html  css  js  c++  java
  • 监控页面所有 ajax请求

    监控所有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

      

  • 相关阅读:
    js 与或运算符 || && 妙用(great!!!)
    type of && undefined
    全新框架?微信小程序与React Native的异同之处
    JS-十五章(15.16)
    JS-第十三章
    ValueError: zero-size array to reduction operation maximum which has no identity
    time
    模块
    day8-函数
    day7-format字符串格式化
  • 原文地址:https://www.cnblogs.com/siqi/p/4214301.html
Copyright © 2011-2022 走看看