在使用 $.ajaxSetup() 方法设置后,再使用 $.ajax() 等方法,就可以省略一些配置。
比如,在 Lavarel 中:
$(function () { $.ajaxSetup({ /*{{-- 如果jQuery.ajaxSetup()上的global属性是true,会在每个Ajax请求上引发全局事件。 jQuery.ajaxSetup()上的global属性默认是true。 注意:全局事件不会针对跨域脚本或JSONP请求引发,无论global的值是什么。 为 true 的时候,下面的全局事件才能生效 --}}*/ global: true /*{{--请求URL,默认取当前页面,具体处理的时候,可以自己设置--}}*/ , url:"{{url()->current()}}" , type: "POST" , dataType: "json" , headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } , cache: false }); }); layui.use(['element', 'layer'], function () { var element = layui.element; var layer = layui.layer; var loading; /*{{--设置全局事件注册--}}*/ /*{{--注册一个处理函数,当第一个Ajax请求开始之前调用它。--}}*/ $(document).ajaxStart(function () { loading = layer.load(2, {shade: 0.2}); }); /*{{--注册一个处理函数,在Ajax请求结束时调用它。--}}*/ $(document).ajaxComplete(function (event, request, settings) { layer.close(loading); }); /*{{--注册一个处理函数,在Ajax请求以出错告终时调用它--}}*/ $(document).ajaxError(function (event, request, settings) { layer.close(loading); if ($.trim(request.responseJSON.msg) != '') { layer.msg(request.responseJSON.msg, {icon: 5}); } else { layer.msg("请求失败 status:" + request.status + " statusText:" + request.statusText, {icon: 5}); } }); /*{{--注册一个处理函数,当所有的Ajax请求都结束时调用它--}}*/ $(document).ajaxStop(function () { layer.close(loading); }); /*{{--附加一个函数,当一个Ajax请求成功地结束时执行它--}}*/ $(document).ajaxSuccess(function (event, request, settings) { layer.close(loading); }); });
以上代码全局设置 csrf-token 自动在头文件传递,ajax 各种状态下的回调操作:开始、成功、失败、停止、完成分别操作 layer 的效果。
然后在子模板中使用 $.ajax $.post $.get 等 ajax 方法的时候,无需单独配置了。省下不少代码。