-
Notifications
You must be signed in to change notification settings - Fork 35
/
moo.ajax.js
40 lines (36 loc) · 1.39 KB
/
moo.ajax.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
//based on prototype's ajax class
//to be used with prototype.lite, moofx.mad4milk.net.
ajax = Class.create();
ajax.prototype = {
initialize: function(url, options){
this.transport = this.getTransport();
this.postBody = options.postBody || '';
this.method = options.method || 'post';
this.onComplete = options.onComplete || null;
this.update = $(options.update) || null;
this.request(url);
},
request: function(url){
this.transport.open(this.method, url, true);
this.transport.onreadystatechange = this.onStateChange.bind(this);
if (this.method == 'post') {
this.transport.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
if (this.transport.overrideMimeType) this.transport.setRequestHeader('Connection', 'close');
}
this.transport.send(this.postBody);
},
onStateChange: function(){
if (this.transport.readyState == 4 && this.transport.status == 200) {
if (this.onComplete)
setTimeout(function(){this.onComplete(this.transport);}.bind(this), 10);
if (this.update)
setTimeout(function(){this.update.innerHTML = this.transport.responseText;}.bind(this), 10);
this.transport.onreadystatechange = function(){};
}
},
getTransport: function() {
if (window.ActiveXObject) return new ActiveXObject('Microsoft.XMLHTTP');
else if (window.XMLHttpRequest) return new XMLHttpRequest();
else return false;
}
};