You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
2.4 KiB
JavaScript
115 lines
2.4 KiB
JavaScript
/**
|
|
* @author Don Griffin
|
|
*
|
|
* Simulates an XMLHttpRequest object's methods and properties but is backed by a
|
|
* {@link Ext.ux.ajax.Simlet} instance that provides the data.
|
|
*/
|
|
Ext.define('Ext.ux.ajax.SimXhr', {
|
|
readyState: 0,
|
|
|
|
mgr: null,
|
|
simlet: null,
|
|
|
|
constructor: function (config) {
|
|
var me = this;
|
|
|
|
Ext.apply(me, config);
|
|
me.requestHeaders = {};
|
|
},
|
|
|
|
abort: function () {
|
|
var me = this;
|
|
|
|
if (me.timer) {
|
|
clearTimeout(me.timer);
|
|
me.timer = null;
|
|
}
|
|
me.aborted = true;
|
|
},
|
|
|
|
getAllResponseHeaders: function () {
|
|
var headers = [];
|
|
Ext.Object.each(this.responseHeaders, function (name, value) {
|
|
headers.push(name + ': ' + value);
|
|
});
|
|
return headers.join('\x0d\x0a');
|
|
},
|
|
|
|
getResponseHeader: function (header) {
|
|
var headers = this.responseHeaders;
|
|
return (headers && headers[header]) || null;
|
|
},
|
|
|
|
open: function (method, url, async, user, password) {
|
|
var me = this;
|
|
me.method = method;
|
|
me.url = url;
|
|
me.async = async !== false;
|
|
me.user = user;
|
|
me.password = password;
|
|
|
|
me.setReadyState(1);
|
|
},
|
|
|
|
overrideMimeType: function (mimeType) {
|
|
this.mimeType = mimeType;
|
|
},
|
|
|
|
schedule: function () {
|
|
var me = this;
|
|
me.timer = setTimeout(function () {
|
|
me.onTick();
|
|
}, me.mgr.delay);
|
|
},
|
|
|
|
send: function (body) {
|
|
var me = this;
|
|
|
|
me.body = body;
|
|
|
|
if (me.async) {
|
|
me.schedule();
|
|
} else {
|
|
me.onComplete();
|
|
}
|
|
},
|
|
|
|
setReadyState: function (state) {
|
|
var me = this;
|
|
if (me.readyState != state) {
|
|
me.readyState = state;
|
|
me.onreadystatechange();
|
|
}
|
|
},
|
|
|
|
setRequestHeader: function (header, value) {
|
|
this.requestHeaders[header] = value;
|
|
},
|
|
|
|
// handlers
|
|
|
|
onreadystatechange: Ext.emptyFn,
|
|
|
|
onComplete: function () {
|
|
var me = this,
|
|
callback;
|
|
|
|
me.readyState = 4;
|
|
Ext.apply(me, me.simlet.exec(me));
|
|
|
|
callback = me.jsonpCallback;
|
|
if (callback) {
|
|
var text = callback + '(' + me.responseText + ')';
|
|
eval(text);
|
|
}
|
|
},
|
|
|
|
onTick: function () {
|
|
var me = this;
|
|
|
|
me.timer = null;
|
|
me.onComplete();
|
|
me.onreadystatechange();
|
|
}
|
|
});
|