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);
    }
});

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM