在使用 $.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 方法的时候,无需单独配置了。省下不少代码。