项目中ajax自动设置 token 请求头,接口响应code的统一处理
项目中经常会遇到需要统一设置 ajax请求的预处理 和 需要统一处理ajax返回的需求
比如登录时需要 在头部添加token(X-Auth-Token)
请求完需要判断code为已退出token失效(3001)和权限不足(3002)的情况
开始使用是使用 jQuery.ajaxSetup() 统一设置ajax参数,但是官方不建议使用,而且这种方式确实不够灵活
http://api.jquery.com/jQuery.ajaxSetup/
Description: Set default values for future Ajax requests. Its use is not recommended.
后来看到 ajax的全局事件的支持,发现这个比较适合
http://api.jquery.com/category/ajax/global-ajax-event-handlers/
- 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)}
- }
- }
- });
- }
相关推荐
qidiantianxia 2020-10-21
kiven 2020-09-11
wolfjin 2020-09-10
HMHYY 2020-06-28
苦咖啡flask 2020-06-18
playis 2020-06-16
xuanwenchao 2020-06-14
sqliang 2020-06-14
TesterJingel 2020-06-10
RocketJ 2020-06-09
powderhose 2020-06-08
rongxionga 2020-06-08
Burgesszheng 2020-06-07
huangyx 2020-05-29
RuoShangM 2020-05-14
数据库之扑朔迷离 2020-05-06