首页 > 如何实现 zepto的ajax 前置过滤器。

如何实现 zepto的ajax 前置过滤器。

想将ajaxPrefilter 移植到zepto上面。

var pendingRequests = {}; //全局的requests列表。
/**

    • callback():

    • @param {[Object]} options对象

    • 包括accepts、crossDomain、contentType、url、async、type、headers、error、dataType等许多参数选项

    • @param {[Object]} originalOptions对象

    • 就是你为$.ajax()方法传递的参数对象,也就是 例如: { url: "/index.php" }

    • @param {[Object]} jqXHR对象

    • 就是经过jQuery封装的XMLHttpRequest对象(保留了其本身的属性和方法)
      */
      $.ajaxPrefilter(function( options, originalOptions, jqXHR ) {

    1. key = options.url;
      if(!pendingRequests[key]) {

         pendingRequests[key] = jqXHR;

      }
      else{
      jqXHR.abort(); // 放弃后触发的重复提交
      //pendingRequests[key].abort(); // 放弃先触发的提交
      }

    2. complete = options.complete;//暂存options的complete方法指针
      options.complete = function(jqXHR, textStatus) {

         //重写complete方法
         pendingRequests[key] = null;
         if ($.isFunction(complete)) {
             complete.apply(this, arguments);//在options下执行。
         }

      };
      });


    <script>

    alert("hello world");

    </script>


    经过调研,自己完成了一套解决方案。
    地址在:http://www.byr.pub/wordpress/2015/11/27/%E5%85%A8%E5%B1%80%E9%98%B2%E6%AD%A2%E9%87%8D%E5%A4%8Dajax%E8%AF%B7%E6%B1%82/

    【热门文章】
    【热门文章】