jQuery / zepto 的 $.ajax 方法須要配置不少選項, 有些是很經常使用的每一個 ajax 請求都要用到的, 能夠全局設置, 避免每次都寫.jquery
注意: 此處用的 jQuery 版本是 1.8.3, zepto 版本是 1.1.6 和 1.2.0. 使用別的版本的要本身測試下.ajax
jQuery 的方法是 jQuery.ajaxSetup() api
$.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 = {...}url
因爲 ajaxSettings 是一個屬性, 值爲一個對象, 直接寫 $.ajaxSettings = {...} 會覆蓋掉全部默認的選項, 因此能夠這麼寫, 只修改須要的部分spa
$.ajaxSettings = $.extend($.ajaxSettings, {
error: ajaxFail
});
有一點要注意的是, ajax 的回調函數只能有一個, 若是你在業務邏輯裏 $.ajax({}) 裏面寫了 error 的回調函數, 則會 覆蓋掉 全局設置的 error 回調函數code
$.ajax({ data: {key: value}, success: function(data) { // success code }, error: function(msg) { // 這裏的 error 回調會覆蓋掉全局設置的 error 回調 // 也就是全局的 'global error handler' 是不會打印的 console.log('local error handler'); } });
若是想要在業務邏輯的 error 回調後面再調用全局的 error 回調的話, 須要手動調用全局的回調:xml
$.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); } });