/**
* 本文件处理所有以ajax方式与后台进行的交互
*/
(function(exports) {
"use strict";
var URL_EXIT = "http://action:10405",
GLOBAL_DEBUG = false; //全局debug开关, debug模式与 common/test/response.js 组合使用
var ajax = {
/**
* 默认不显示loading动画
*/
SHOW_LOADING : false,
/**
* 默认的错误处理
*/
defaultErrorHandle : function(xmlHttpRequest, textStatus, errorThrown) {
var message = "";
switch (textStatus) {
case "timeout":
message = "请求超时.";
alert(message);
break;
case "parsererror":
message = "数据格式出错.";
alert(message);
break;
default:
return false;
}
return false;
},
/**
* 显示loading动画
*/
showLoading: function() {
var loadingHtml = $(".loading");
if (loadingHtml.length <= 0) {
loadingHtml = $('<div class="loading"> <img src="/common/images/loading.gif"> </div>');
loadingHtml.appendTo('body');
}
loadingHtml.css("padding-top", loadingHtml.height() / 2 - 30 + "px");
loadingHtml.fadeIn(600);
// 最多5秒
setTimeout(function () {
loadingHtml.fadeOut(600);
}, 5000)
},
/**
* 隐藏loading动画
*/
hideLoading: function() {
$(".loading").fadeOut(600);
},
/**
* 对公共的请求参数做全局封装。
* 返回 jqXHR 对象,仍然支持链式表达式
* @param onSuccess 成功时的回调
* @param onError 失败时的回调
* @param options debug时所用的配置选项
*/
run : function(url, data, onSuccess, onError, options) {
var blackList = [ -204007, -204009, -207001, -204001, -10001 ], // 出现这些错误号需要交易登出
that = this;
if (that.isDebug(options)) {
return that.debug(url, data, onSuccess, onError, options);
}
//跳转到互联网方式请求,目前的跳转要求是
//action=27006 & ( funcId=101080 funcId=101070 funcId=101073 funcId=101066 funcId=101092 funcId=101064 funcId=101002&type=report )
var change3g = false;
if(url.indexOf("action=27006") != -1
&& ( url.indexOf("funcId=101080") !=-1 || url.indexOf("funcId=101070") !=-1
|| url.indexOf("funcId=101073") !=-1 || url.indexOf("funcId=101066") !=-1
|| url.indexOf("funcId=101092") !=-1 || url.indexOf("funcId=101064") !=-1
|| url.indexOf("funcId=101002") !=-1 )
)
{
if(url.indexOf("/reqxml?action=27006&path=/htsc_hub/info&") != -1) {
change3g = true;
url = url.replace("/reqxml?action=27006&path=/htsc_hub/info&", "http://120.27.165.176:7707/htsc_hub/info?");
}
}
return $.ajax({
type : "post",
url : url,
data : data,
async : true,
contentType : "application/x-www-form-urlencoded;", // 避免乱码
beforeSend: function() {
if (that.SHOW_LOADING) {
that.showLoading();
}
},
complete: function() {
if (that.SHOW_LOADING) {
that.hideLoading();
}
},
success : function(data) {
// 处理带错误码的返回
if(change3g) {
var newData = {"ACTION":"27006","ERRORNO":"100","BINDATA":data};
onSuccess && onSuccess(newData);
} else {
if (data && data.ERRORNO) {
var errorNumber = Number(data.ERRORNO);
if (blackList.indexOf(errorNumber) >= 0) {
base.href(URL_EXIT);
onError && onError(data);
return false;
} else if ((errorNumber < 0 && data.ERRORMESSAGE)
|| Number($(data).find("flag").attr("code")) < 0) {
onError && onError(data);
base.log(data.ERRORMESSAGE);
return false;
} else {
onSuccess && onSuccess(data);
}
} else {
// 不带错误码的情况,不处理,直接执行成功的回调
onSuccess && onSuccess(data);
}
}
},
error : that.defaultErrorHandle
});
},
/**
* 判断是否为debug模式,并提取debug模式的一系列配置参数
* options必须有 debug: true 这一参数,debug模式才会生效
*/
isDebug: function(options) {
return GLOBAL_DEBUG && (options && options.debug && (options.debug === true));
},
/**
* 执行预置的测试数据,来模拟接口返回
* options中会包括以下参数:
* debug: true
* responseId: abc 指定response.js中的哪一个返回值
* fail: true 非必选,若有值,则强制走onError分支
*/
debug: function(url, data, onSuccess, onError, options) {
if (base.empty(options)) {
return null;
}
var data = "";
if (options.responseId) {
data = response[options.responseId];
}
if (options.fail ) {
onError && onError(data);
} else {
onSuccess && onSuccess(data);
}
}
};
exports.ajax = ajax;
/**
* 兼容AMD和非AMD规范
*/
if (typeof define === "function" && define.amd) {
if (GLOBAL_DEBUG) {
define([ "jquery", "base", "/common/test/js/response.js"], function($, base, response) {
return ajax;
});
} else {
define([ "jquery", "base" ], function($, base) {
return ajax;
});
}
}
})(window);
* 本文件处理所有以ajax方式与后台进行的交互
*/
(function(exports) {
"use strict";
var URL_EXIT = "http://action:10405",
GLOBAL_DEBUG = false; //全局debug开关, debug模式与 common/test/response.js 组合使用
var ajax = {
/**
* 默认不显示loading动画
*/
SHOW_LOADING : false,
/**
* 默认的错误处理
*/
defaultErrorHandle : function(xmlHttpRequest, textStatus, errorThrown) {
var message = "";
switch (textStatus) {
case "timeout":
message = "请求超时.";
alert(message);
break;
case "parsererror":
message = "数据格式出错.";
alert(message);
break;
default:
return false;
}
return false;
},
/**
* 显示loading动画
*/
showLoading: function() {
var loadingHtml = $(".loading");
if (loadingHtml.length <= 0) {
loadingHtml = $('<div class="loading"> <img src="/common/images/loading.gif"> </div>');
loadingHtml.appendTo('body');
}
loadingHtml.css("padding-top", loadingHtml.height() / 2 - 30 + "px");
loadingHtml.fadeIn(600);
// 最多5秒
setTimeout(function () {
loadingHtml.fadeOut(600);
}, 5000)
},
/**
* 隐藏loading动画
*/
hideLoading: function() {
$(".loading").fadeOut(600);
},
/**
* 对公共的请求参数做全局封装。
* 返回 jqXHR 对象,仍然支持链式表达式
* @param onSuccess 成功时的回调
* @param onError 失败时的回调
* @param options debug时所用的配置选项
*/
run : function(url, data, onSuccess, onError, options) {
var blackList = [ -204007, -204009, -207001, -204001, -10001 ], // 出现这些错误号需要交易登出
that = this;
if (that.isDebug(options)) {
return that.debug(url, data, onSuccess, onError, options);
}
//跳转到互联网方式请求,目前的跳转要求是
//action=27006 & ( funcId=101080 funcId=101070 funcId=101073 funcId=101066 funcId=101092 funcId=101064 funcId=101002&type=report )
var change3g = false;
if(url.indexOf("action=27006") != -1
&& ( url.indexOf("funcId=101080") !=-1 || url.indexOf("funcId=101070") !=-1
|| url.indexOf("funcId=101073") !=-1 || url.indexOf("funcId=101066") !=-1
|| url.indexOf("funcId=101092") !=-1 || url.indexOf("funcId=101064") !=-1
|| url.indexOf("funcId=101002") !=-1 )
)
{
if(url.indexOf("/reqxml?action=27006&path=/htsc_hub/info&") != -1) {
change3g = true;
url = url.replace("/reqxml?action=27006&path=/htsc_hub/info&", "http://120.27.165.176:7707/htsc_hub/info?");
}
}
return $.ajax({
type : "post",
url : url,
data : data,
async : true,
contentType : "application/x-www-form-urlencoded;", // 避免乱码
beforeSend: function() {
if (that.SHOW_LOADING) {
that.showLoading();
}
},
complete: function() {
if (that.SHOW_LOADING) {
that.hideLoading();
}
},
success : function(data) {
// 处理带错误码的返回
if(change3g) {
var newData = {"ACTION":"27006","ERRORNO":"100","BINDATA":data};
onSuccess && onSuccess(newData);
} else {
if (data && data.ERRORNO) {
var errorNumber = Number(data.ERRORNO);
if (blackList.indexOf(errorNumber) >= 0) {
base.href(URL_EXIT);
onError && onError(data);
return false;
} else if ((errorNumber < 0 && data.ERRORMESSAGE)
|| Number($(data).find("flag").attr("code")) < 0) {
onError && onError(data);
base.log(data.ERRORMESSAGE);
return false;
} else {
onSuccess && onSuccess(data);
}
} else {
// 不带错误码的情况,不处理,直接执行成功的回调
onSuccess && onSuccess(data);
}
}
},
error : that.defaultErrorHandle
});
},
/**
* 判断是否为debug模式,并提取debug模式的一系列配置参数
* options必须有 debug: true 这一参数,debug模式才会生效
*/
isDebug: function(options) {
return GLOBAL_DEBUG && (options && options.debug && (options.debug === true));
},
/**
* 执行预置的测试数据,来模拟接口返回
* options中会包括以下参数:
* debug: true
* responseId: abc 指定response.js中的哪一个返回值
* fail: true 非必选,若有值,则强制走onError分支
*/
debug: function(url, data, onSuccess, onError, options) {
if (base.empty(options)) {
return null;
}
var data = "";
if (options.responseId) {
data = response[options.responseId];
}
if (options.fail ) {
onError && onError(data);
} else {
onSuccess && onSuccess(data);
}
}
};
exports.ajax = ajax;
/**
* 兼容AMD和非AMD规范
*/
if (typeof define === "function" && define.amd) {
if (GLOBAL_DEBUG) {
define([ "jquery", "base", "/common/test/js/response.js"], function($, base, response) {
return ajax;
});
} else {
define([ "jquery", "base" ], function($, base) {
return ajax;
});
}
}
})(window);