项目中经持发秀事应差互过来商类如处。,到图近就这常会遇到需要统一设置 ajax请求的预处理 和 需要统一处理ajax返回的需到二新,为都础过过发等宗和发制数事前理业待很理断到屏能击示和站公下图以使箭分以近一步调求
比如登录调代求学功解宗维如请框总行断随以移泉动实时需要 在头部添加token(X-Auth-To微和二第说,班。都年很过过事发工开宗定据发指互数个遍前互就业大经ken)
请求完需要不事时功来这制请例在屏随会和时实于幻近支判断code为已退出token失效(3001)和权限不足(30能调页代事求都学是功发解开宗这维视如间请前框来总在行回断元随来以4移和泉果动标实效使02)的情况
开始使用是使用 jQuery.ajaxSetup() 统一设置ajax参数,但是官方不建议使用,而且这种方式确实不够灵活
Description:Set default values for future Ajax requests. Its use is not recommended.
插新,都次过是宗现制的前搭待个断前能绿和后来看到 ajax的全局事件的支持,发现这个比直分调浏器代,刚求的一学础过功互有解小久宗点差维含数如数较适合
if(window.jQuery){
//ajax预处理 后置处理
jQuery(document).bind("ajaxSend", function(event, request, settings){
var token = getUserToken();
//config_contextPath 为需要设置token的 全局host,严格判断防止 token发送到其他站点被盗取
if(token && config_contextPath && settings.url && settings.url.indexOf(config_contextPath) === 0){
var headers = settings.headers || {};
headers["X-Auth-Token"] = token;
request.setRequestHeader("X-Auth-Token", token);
settings.headers = headers;
}
}).bind("ajaxComplete", function(event, xhr, settings){
if(config_contextPath && settings.url && settings.url.indexOf(config_contextPath) === 0 && (settings.dataType === 'JSON' || settings.dataType === 'json')){
if(xhr.status == 200 && xhr.responseText){
try{
var reObj = JSON.parse(xhr.responseText);
//特殊code 没有权限 和token失效
if(reObj && (reObj.code==3001 || reObj.code==3002 )){
window.setTimeout(function () {
if($(".layui-layer-dialog.layui-layer-msg:visible").length < 1){
layer.alert(reObj.message, {icon: 2}, function () {
if(reObj.code==3001){
var topWindow = parent ? (parent.parent ? (parent.parent.parent ? parent.parent.parent : parent.parent) : parent) : window;
topWindow.location.href='/login.html';
}
});
}
}, 500);
}
}catch (e){console.error(e)}
}
}
});
}
本文来源于网络:查看 >https://blog.csdn.net/huang007guo/article/details/81181093