2014-05-29 19:41:38 +08:00
|
|
|
|
|
|
|
|
|
define(function (require, exports, module) {
|
|
|
|
|
var EventObject = require("../platform/EventObject.js");
|
|
|
|
|
var config = require("../data.js");
|
|
|
|
|
|
|
|
|
|
var WebRequest = function() {
|
|
|
|
|
var that = this;
|
|
|
|
|
var requestMap = {};
|
|
|
|
|
var ajaxCount = 0;
|
|
|
|
|
|
|
|
|
|
EventObject.apply(this, arguments);
|
|
|
|
|
this.getFullUri= function (url) {
|
|
|
|
|
/// <summary>获得完整地址</summary>
|
|
|
|
|
|
|
|
|
|
if (url[4] === ":" || url[5] === ":") return url;
|
|
|
|
|
return config.baseUri + url;
|
|
|
|
|
};
|
|
|
|
|
this.send = function (method, url, refer, data, responseType, done, failed) {
|
|
|
|
|
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 {
|
|
|
|
|
that.fireEvent("requestSupportError");
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
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) {
|
|
|
|
|
that.send("GET", url, refer, data, responseType, done, failed);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
document.addEventListener("ajaxproxyfinished", function (e) {
|
|
|
|
|
var data = e.detail;
|
|
|
|
|
if (!requestMap[data.index]) return;
|
|
|
|
|
|
|
|
|
|
var param = requestMap[data.index];
|
|
|
|
|
delete requestMap[data.index];
|
|
|
|
|
data.success ? param.done.call(data) : param.fail.call(data);
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
WebRequest.prototype = Object.create(EventObject);
|
|
|
|
|
WebRequest.constructor = WebRequest;
|
|
|
|
|
|
|
|
|
|
module.exports = new WebRequest();
|
|
|
|
|
});
|