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; }, recode: function() { $('#randcodeimg').attr('src', $('#randcodeimg').attr('data-loading')); $('#randcode').val('').focus(); cn12306.loadRandCode('sjrand', function(data) { $('#randcodeimg').attr('src', data); }, "login/init"); }, /** * 获取验证码 * @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) { // 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); 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); } }); // $.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'; 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(); } }).fail(function(xhr, type) { (typeof errorCallback == "function") && errorCallback(); }); // 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; bootStrap.post('login/checkUser', 'json', null, 'login/init').done(function() { setTimeout(cn12306.checkeUser, 60000); }).fail(function() { setTimeout(cn12306.checkeUser, 60000); }); // cn12306.ajax({ // url: 'login/checkUser', // refer: 'login/init', // success: function() { // setTimeout(cn12306.checkeUser, 60000); // }, // error: function() { // setTimeout(cn12306.checkeUser, 60000); // } // }); } }