zoukankan      html  css  js  c++  java
  • jQuery / zepto ajax 全局默认设置

    jQuery / zepto 的 $.ajax 方法需要配置很多选项, 有些是很常用的每个 ajax 请求都要用到的, 可以全局设置, 避免每次都写.

    注意: 此处用的 jQuery 版本是 1.8.3, zepto 版本是 1.1.6 和 1.2.0. 使用别的版本的要自己测试下.

    jQuery 的方法是 jQuery.ajaxSetup() 

    $.ajaxSetup({
          url: "/xmlhttp/",
          global: false,
          type: "POST"
    });

    如果想设置 complete error 等回调, 可以用 .ajaxComplete()  .ajaxError() 等.

    $.ajaxError(function( event, request, settings ) {
          // ...
          console.log('global error handler');
    });
    
    // jquery 1.9 以后, 全局 ajax 事件必须加在 document 上面
    $(document).ajaxError(function( event, jqxhr, setting, thrownError ) {
          // ...
          console.log('global error handler');
    });

    如果业务逻辑处写了 error 的回调, 则 jQuery 会先调用业务逻辑处的 error 回调, 再调用全局设置的 error 回调.

    $.ajax({
        data: {key: value},
        success: function(data) {
           // success code
        },
    
        error: function(msg) {
    
            console.log('local error handler');
        }
    });
    
    // 最终的结果, 先打印 local error handler, 再打印 global error handler
    // 这一点与 zepto 不同, 见下文

    zepto 的设置方法是修改属性 $.ajaxSettings = {...}

    由于 ajaxSettings 是一个属性, 值为一个对象, 直接写 $.ajaxSettings = {...} 会覆盖掉所有默认的选项, 所以可以这么写, 只修改需要的部分

    $.ajaxSettings = $.extend($.ajaxSettings, {
        error: ajaxFail
    });

    有一点要注意的是, ajax 的回调函数只能有一个, 如果你在业务逻辑里 $.ajax({}) 里面写了 error 的回调函数, 则会 覆盖掉 全局设置的 error 回调函数

    $.ajax({
        data: {key: value},
        success: function(data) {
           // success code
        },
    
        error: function(msg) {
            // 这里的 error 回调会覆盖掉全局设置的 error 回调
            // 也就是全局的 'global error handler' 是不会打印的
            console.log('local error handler');
        }
    });

    如果想要在业务逻辑的 error 回调后面再调用全局的 error 回调的话, 需要手动调用全局的回调:

    $.ajax({
        data: {key: value},
        success: function(data) {
           // success code
        },
    
        error: function(msg) {
            // 这里的 error 回调会覆盖掉全局设置的 error 回调
            // 也就是全局的 'global error handler' 是不会打印的
            console.log('local error handler');
    
            // 想要再调用全局的 error 回调, 需要手动调用
            $.ajaxSettings.error(msg);
        }
    });
  • 相关阅读:
    Eclipse下,修改MAVEN 中央仓库地址,解决maven下载慢问题
    C语言中头文件string的用法
    Linux中变量$#,$@,$0,$1,$2,$*,$$,$?的含义
    Curl
    LDAP是什么
    Linux网络基本网络配置
    vim
    request,session,cookie的比较
    J2EE开发过程中遇到的问题
    实现弹出登录窗口
  • 原文地址:https://www.cnblogs.com/muge10/p/6383545.html
Copyright © 2011-2022 走看看