Light12306/Mobile12306New/js/12306.js

209 lines
5.9 KiB
JavaScript
Raw Normal View History

2014-08-19 16:11:37 +08:00
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;
},
2014-08-22 18:00:59 +08:00
recode: function() {
2014-08-19 16:11:37 +08:00
2014-08-22 18:00:59 +08:00
$('#randcodeimg').attr('src', $('#randcodeimg').attr('data-loading'));
$('#randcode').val('').focus();
cn12306.loadRandCode('sjrand', function(data) {
$('#randcodeimg').attr('src', data);
}, "login/init");
},
2014-08-19 16:11:37 +08:00
/**
* 获取验证码
* @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";
2014-08-19 16:11:37 +08:00
} else if (flag == "randp") {
return "passcodeNew/getPassCodeNew?module=passenger&rand=randp";
2014-08-19 16:11:37 +08:00
}
Public.alert("不支持的验证码类型!");
})(flag));
bootStrap.getImage(url, refer).done(callback).fail(function() {
Public.alert("加载验证码失败,请点击验证码刷新");
});
2014-08-19 16:11:37 +08:00
},
/**
* 获取ajax url
* @param {String} url ajax url
* @return {String} ajax url
*/
getAjaxUrl: function(url) {
2014-08-21 13:42:42 +08:00
// return (isAndLiebao || isIos || isWebApp) ? cn12306.getFullUri(url) : baseProxyUrl;
return (isAndLiebao || isIos) ? cn12306.getFullUri(url) : baseProxyUrl;
2014-08-19 16:11:37 +08:00
},
/**
* 获取请求头
* @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;
2014-08-21 13:42:42 +08:00
// if (!(isAndLiebao || isIos || isWebApp)) {
if (!(isAndLiebao || isIos)) {
2014-08-19 16:11:37 +08:00
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);
2014-08-22 18:00:59 +08:00
bootStrap.post("passcodeNew/checkRandCodeAnsyn", null, null, refer).done(function(data) {
if (typeof success == 'function') {
success(data);
}
}).fail(function(xhr, type) {
if (typeof error == 'function') {
error(xhr, type);
2014-08-19 16:11:37 +08:00
}
});
2014-08-22 18:00:59 +08:00
// $.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);
// }
// }
// });
2014-08-19 16:11:37 +08:00
},
/**
* 测试指定用户是否已经登录
* @param {function} loginedCallback 已经登录回调
* @param {Function} unloginCallback 未登录回调
* @param {Function} errorCallback 错误回调
*/
isUserLogined: function(loginedCallback, unloginCallback, errorCallback) {
2014-08-21 13:42:42 +08:00
var url = "login/checkUser",
refer = 'leftTicket/init';
2014-08-19 16:11:37 +08:00
2014-08-22 18:00:59 +08:00
bootStrap.post("login/checkUser", "json", {
"_json_att": ""
}, "leftTicket/init").done(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();
2014-08-19 16:11:37 +08:00
}
2014-08-22 18:00:59 +08:00
}).fail(function(xhr, type) {
(typeof errorCallback == "function") && errorCallback();
2014-08-19 16:11:37 +08:00
});
2014-08-22 18:00:59 +08:00
// 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();
// }
// });
2014-08-21 13:42:42 +08:00
},
2014-08-22 18:00:59 +08:00
ajax: function(o) {
2014-08-21 13:42:42 +08:00
var obj = {
2014-08-22 18:00:59 +08:00
"type": 'POST',
"dataType": 'json'
2014-08-21 13:42:42 +08:00
}
2014-08-22 18:00:59 +08:00
$.extend(obj, o || {});
2014-08-21 13:42:42 +08:00
obj["headers"] = cn12306.getHeaders(obj["url"], obj["refer"]);
2014-08-22 18:00:59 +08:00
if (typeof obj["url"] != 'undefined') {
obj["url"] = cn12306.getAjaxUrl(cn12306.getFullUri(obj["url"]));
}
if (typeof obj["refer"] != 'undefined') {
obj["refer"] = cn12306.getAjaxUrl(obj["refer"]);
}
2014-08-21 13:42:42 +08:00
$.ajax(obj);
2014-08-21 16:32:56 +08:00
},
2014-08-22 18:00:59 +08:00
checking: false,
checkeUser: function() {
2014-08-21 16:32:56 +08:00
cn12306.checking = true;
2014-08-22 18:00:59 +08:00
bootStrap.post('login/checkUser', 'json', null, 'login/init').done(function() {
setTimeout(cn12306.checkeUser, 60000);
}).fail(function() {
setTimeout(cn12306.checkeUser, 60000);
2014-08-21 16:32:56 +08:00
});
2014-08-22 18:00:59 +08:00
// cn12306.ajax({
// url: 'login/checkUser',
// refer: 'login/init',
// success: function() {
// setTimeout(cn12306.checkeUser, 60000);
// },
// error: function() {
// setTimeout(cn12306.checkeUser, 60000);
// }
// });
2014-08-19 16:11:37 +08:00
}
}