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