да он стал уже таким. После оптимизации и попытки кроссплатформенности.
| Код | var ajax = {
options: { method: 'post', async: true, onStateChange: function() { }, onFailure: function() { }, onSuccess: function() { } },
setOptions: function(content) { for (var i in content) { this.options[i] = content[i]; } }, transport: (window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest()),
send: function(url, data) { if (this.running) return this; this.running = true; this.transport.open(this.options.method, url, this.options.async); var self = this; this.transport.onreadystatechange = function() { if (self.transport.readyState == 4 && self.running) { self.running = false; if (self.transport.status >= 200 && self.transport.status < 300) { self.options.onSuccess(self.transport.responseText); } else { self.options.onFailure(self.transport.status); } } else { self.options.onStateChange(self.transport.readyState); } } if (this.options.method == 'post') this.transport.setRequestHeader('Content-type','application/x-www-form-urlencoded'); this.transport.send((data ? data : null)); }, collect: function(a, f) { var n = []; for(var i = 0; i < a.length; i++) { var v = f(a[i]); if (v != null) n.push(v); } return n; }, serialize: function(f) { var r = []; var g = function(n) { return f.getElementsByTagName(n) }; var nv = function(e){ if (e.name) r[r.length] = encodeURIComponent(e.name) + '=' + encodeURIComponent(e.value); }; this.collect(g('input'), function(i) { if ((i.type != 'radio' && i.type != 'checkbox') || i.checked) return nv(i); }); this.collect(g('select'), nv); this.collect(g('textarea'), nv); return r.join('&'); }
} |
|