171 lines
4.6 KiB
JavaScript
171 lines
4.6 KiB
JavaScript
var cn12306 = {
|
||
coreVersion: "1.0.0.0",
|
||
baseUri: "https://kyfw.12306.cn/otn/",
|
||
queryBaseUri: "http://dynamic.12306.cn/otsquery/",
|
||
ajaxQueue: {},
|
||
ajaxCount: 0,
|
||
getFullUri: function(url) {
|
||
return url[4] === ":" || url[5] === ":" ? url : cn12306.baseUri + url;
|
||
},
|
||
|
||
/**
|
||
* 获取验证码
|
||
* @param {String} flag 验证码类型(sjrand|randp)
|
||
* @param {Function} callback 获取后回调
|
||
* @param {String} refer Header refer
|
||
* @return {Img uri} base64图片url
|
||
*/
|
||
loadRandCode: function(flag, callback, refer) {
|
||
var url = cn12306.getFullUri(flag[4] === ":" || flag[5] === ":" ? flag : (function(f) {
|
||
if (flag == "sjrand") {
|
||
return "passcodeNew/getPassCodeNew?module=login&rand=sjrand";
|
||
} else if (flag == "randp") {
|
||
return "passcodeNew/getPassCodeNew?module=passenger&rand=randp";
|
||
}
|
||
Public.alert("不支持的验证码类型!");
|
||
})(flag));
|
||
|
||
bootStrap.getImage(url, refer).done(callback).fail(function() {
|
||
Public.alert("加载验证码失败,请点击验证码刷新");
|
||
});
|
||
},
|
||
|
||
/**
|
||
* 获取ajax url
|
||
* @param {String} url ajax url
|
||
* @return {String} ajax url
|
||
*/
|
||
getAjaxUrl: function(url) {
|
||
console.log(url)
|
||
// return (isAndLiebao || isIos || isWebApp) ? cn12306.getFullUri(url) : baseProxyUrl;
|
||
return (isAndLiebao || isIos) ? cn12306.getFullUri(url) : baseProxyUrl;
|
||
},
|
||
|
||
/**
|
||
* 获取请求头
|
||
* @param {String} url ajax url
|
||
* @param {String} refer Header refer
|
||
* @return {Object} 所有header
|
||
*/
|
||
getHeaders: function(url, refer) {
|
||
var url = cn12306.getFullUri(url),
|
||
refer = cn12306.getFullUri(refer),
|
||
headers = {},
|
||
prefix = isAndLiebao ? "" : "Fish-";
|
||
|
||
headers[prefix + "User-Agent"] = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)",
|
||
headers[prefix + "Origin"] = /(https?:\/\/[^\/]+\/)/.exec(url)[1],
|
||
headers[prefix + "RawUrl"] = url
|
||
headers[prefix + "Referer"] = refer;
|
||
// if (!(isAndLiebao || isIos || isWebApp)) {
|
||
if (!(isAndLiebao || isIos)) {
|
||
headers["Fish-RawUrl"] = url;
|
||
}
|
||
return headers;
|
||
},
|
||
|
||
/**
|
||
* 验证验证码
|
||
* @param {String} type 验证码类型
|
||
* @param {String} code 需要验证的验证码
|
||
* @param {Function} success 成功回调
|
||
* @param {Function} error 失败回调
|
||
* @param {String} refer Header请求头refer
|
||
* @return {Ajax Callback} 执行回调
|
||
*/
|
||
checkRandCode: function(type, code, success, error, refer) {
|
||
var url = cn12306.getFullUri("passcodeNew/checkRandCodeAnsyn"),
|
||
refer = cn12306.getFullUri(refer),
|
||
headers = cn12306.getHeaders(url, refer);
|
||
|
||
$.ajax({
|
||
type: 'POST',
|
||
url: cn12306.getAjaxUrl(url),
|
||
data: {
|
||
"randCode": code,
|
||
"rand": type
|
||
},
|
||
dataType: 'json',
|
||
refer: refer,
|
||
headers: headers,
|
||
success: function(data) {
|
||
if (typeof success == 'function') {
|
||
success(data);
|
||
}
|
||
},
|
||
error: function(xhr, type) {
|
||
if (typeof error == 'function') {
|
||
error(xhr, type);
|
||
}
|
||
}
|
||
});
|
||
},
|
||
|
||
/**
|
||
* 测试指定用户是否已经登录
|
||
* @param {function} loginedCallback 已经登录回调
|
||
* @param {Function} unloginCallback 未登录回调
|
||
* @param {Function} errorCallback 错误回调
|
||
*/
|
||
isUserLogined: function(loginedCallback, unloginCallback, errorCallback) {
|
||
var url = "login/checkUser",
|
||
refer = 'leftTicket/init';
|
||
|
||
cn12306.ajax({
|
||
url: "login/checkUser",
|
||
data: {
|
||
"_json_att": ""
|
||
},
|
||
refer: "leftTicket/init",
|
||
success: function(json) {
|
||
if (json && json.data && json.data.flag) {
|
||
if (json.attributes) {
|
||
sessionStorage["useratts"] = json.attributes;
|
||
};
|
||
if(!cn12306.checking){
|
||
cn12306.checkeUser();
|
||
};
|
||
(typeof loginedCallback == "function") && loginedCallback();
|
||
} else {
|
||
(typeof unloginCallback == "function") && unloginCallback();
|
||
}
|
||
},
|
||
error: function(xhr, type) {
|
||
(typeof errorCallback == "function") && errorCallback();
|
||
}
|
||
});
|
||
},
|
||
|
||
ajax:function(o){
|
||
var obj = {
|
||
"type" : 'POST',
|
||
"dataType" : 'json'
|
||
}
|
||
|
||
$.extend(obj,o||{});
|
||
|
||
obj["headers"] = cn12306.getHeaders(obj["url"], obj["refer"]);
|
||
|
||
if(typeof obj["url"] != 'undefined'){
|
||
obj["url"] = cn12306.getAjaxUrl(cn12306.getFullUri(obj["url"]));
|
||
}
|
||
if(typeof obj["refer"] != 'undefined'){
|
||
obj["refer"] = cn12306.getAjaxUrl(obj["refer"]);
|
||
}
|
||
$.ajax(obj);
|
||
},
|
||
checking :false,
|
||
checkeUser:function(){
|
||
cn12306.checking = true;
|
||
cn12306.ajax({
|
||
url:'login/checkUser',
|
||
refer:'login/init',
|
||
success:function(){
|
||
setTimeout(cn12306.checkeUser,60000);
|
||
},
|
||
error:function(){
|
||
setTimeout(cn12306.checkeUser,60000);
|
||
}
|
||
});
|
||
}
|
||
} |