Light12306/Web12306/js/platform/webRequest.js

98 lines
2.8 KiB
JavaScript
Raw Normal View History

2014-05-29 19:41:38 +08:00

define(function (require, exports, module) {
var EventObject = require("../platform/EventObject.js");
var config = require("../data.js");
2014-06-12 21:36:05 +08:00
var WebRequest = function () {
2014-05-29 19:41:38 +08:00
var that = this;
var requestMap = {};
var ajaxCount = 0;
2014-06-12 21:36:05 +08:00
var jsonAtt = null;
2014-05-29 19:41:38 +08:00
EventObject.apply(this, arguments);
2014-06-12 21:36:05 +08:00
this.getFullUri = function (url) {
2014-05-29 19:41:38 +08:00
/// <summary>获得完整地址</summary>
if (url[4] === ":" || url[5] === ":") return url;
return config.baseUri + url;
};
2014-06-12 21:36:05 +08:00
this.send = function (method, url, refer, data, responseType, done, failed, ignoreGlobalAtt) {
if (!ignoreGlobalAtt && jsonAtt) {
data = $.extend({
_json_att: jsonAtt
}, data);
}
2014-05-29 19:41:38 +08:00
var xhrData = {
url: that.getFullUri(url),
data: data,
timeout: 120000,
type: "GET",
dataType: responseType,
refer: that.getFullUri(refer)
};
var e = new CustomEvent("ajaxproxy", { detail: { data: xhrData, index: ajaxCount++ }, cancelable: true });
if (!document.dispatchEvent(e)) {
requestMap[e.detail.index] = {
done: done,
fail: failed
};
return;
} else {
2014-06-12 21:36:05 +08:00
document.dispatchEvent(new CustomEvent("requestSupportError"));
}
};
this.loadImage = function (url, refer, done, failed) {
var e = new CustomEvent("ajaxLoadVerifyCode", { detail: { url: that.getFullUri(url), refer: that.getFullUri(url), index: ajaxCount++ }, cancelable: true });
if (!document.dispatchEvent(e)) {
requestMap[e.detail.index] = {
done: done,
fail: failed
};
return;
} else {
document.dispatchEvent(new CustomEvent("requestSupportError"));
2014-05-29 19:41:38 +08:00
}
};
this.sendGet = function (url, refer, data, responseType, done, failed) {
/// <summary>以GET模式发送AJAX请求</summary>
/// <param name="url">要请求的地址</param>
/// <param name="refer">请求的引用地址</param>
/// <param name="data">要发送的数据</param>
/// <param name="responseType">要请求的地址</param>
/// <param name="done">完成请求的回调</param>
/// <param name="failed">请求失败的回调</param>
that.send("GET", url, refer, data, responseType, done, failed);
};
this.sendPost = function (url, refer, data, responseType, done, failed) {
2014-06-12 21:36:05 +08:00
that.send("POST", url, refer, data, responseType, done, failed);
2014-05-29 19:41:38 +08:00
};
document.addEventListener("ajaxproxyfinished", function (e) {
var data = e.detail;
if (!requestMap[data.index]) return;
var param = requestMap[data.index];
delete requestMap[data.index];
2014-06-12 21:36:05 +08:00
2014-05-29 19:41:38 +08:00
data.success ? param.done.call(data) : param.fail.call(data);
});
2014-06-12 21:36:05 +08:00
Object.defineProperties(this, {
"userAtts": {
get: function () {
return jsonAtt;
},
set: function (value) {
jsonAtt = value;
}
}
});
2014-05-29 19:41:38 +08:00
};
WebRequest.prototype = Object.create(EventObject);
WebRequest.constructor = WebRequest;
module.exports = new WebRequest();
});