/* This program is free software. It comes without any warranty, to the extent permitted by applicable law. You can redistribute it and/or modify it under the terms of the Do What The Fuck You Want To Public License, Version 2, as published by Sam Hocevar. See http://sam.zoy.org/wtfpl/COPYING for more details. */ /* httpobj: javascript class using XMLHttpRequest to send and retrieve info. See /httpobj to get an example of the usage. */ //v.1.0 function httpobj() { // Get XMLHttpRequest object this.obj = this.getobj() if (!this.obj) { alert('Your browser does not support HTTP Requests! Get a new one (a browser, that is. Not a request).') delete this return false } // Define default variables this.param = {} this.method = 'POST' // Fix for later on this.obj.topelem = this } httpobj.prototype.getobj = function() { // Try to get the XMLHttpRequest object try { return new XMLHttpRequest() } catch (e) {} try { return new ActiveXObject('Msxml2.XMLHTTP.6.0') } catch(e) {} try { return new ActiveXObject('Msxml2.XMLHTTP.3.0') } catch(e) {} try { return new ActiveXObject('Msxml2.XMLHTTP') } catch(e) {} try { return new ActiveXObject('Microsoft.XMLHTTP') } catch(e) { return false // FAILURE } } httpobj.prototype.send = function() { /* send(): Sends parametres (param) to url (url) and sets up function to react on retrievement */ if (!this.url) { // Exit function if either url or the function to be called is undefined delete this return false } // Transform param into string type ?foo=bar&hmm=aha this.text_params = '' if (this.param) { for (var x in this.param) this.text_params += '&' + x + '=' + this.param[x] this.text_params = this.text_params.substr(1) } if (this.method.toLowerCase() == 'get') { // In case of GET method, use '?' var after_url if (!this.param) after_url = '' else after_url = '?' + this.text_params this.obj.open('GET', this.url + after_url, true) this.obj.send(null) } else { // In case of POST method, use RequestHeader this.obj.open('POST', this.url, true) this.obj.setRequestHeader('Content-type', 'application/x-www-form-urlencoded') this.obj.setRequestHeader('Content-length', this.text_params.length) this.obj.setRequestHeader('Connection', 'close') this.obj.send(this.text_params) } // What to do when something happens this.obj.onreadystatechange = function() { // Only do something when it's complete if (this.readyState == 4 || this.readyState == 'complete') { // Define 3 variables to be used with the user-defined function (func) var text, params, state text = this.responseText params = this.topelem.param // this.topelem = this.obj.topelem = this // State 0 is good, state 1 is bad state = 0 if (this.status != 200) { state = 1 text = '' } // Call user-defined function if (this.topelem.func) eval(this.topelem.func) delete this } } return true // It has a chance of working.. }