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

发布于 2022-09-01 21:40:19 字数 1145 浏览 15 评论 0

想将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下执行。
         }

      };
      });

    如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

    扫码二维码加入Web技术交流群

    发布评论

    需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

    评论(2

    陪我终i 2022-09-08 21:40:19

    <script>

    alert("hello world");

    </script>

    ~没有更多了~
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文