Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Problem in this ajax library. </p> <p><code>XHR.setRequestHeader()</code> must be called after <code>XHR.open()</code>.</p> <pre><code>// @method XRequest: Object constructor. As this implements a singleton, the object can't be created calling the constructor, GetInstance should be called instead function XRequest() { this.XHR = XRequest.CreateXHR(); } XRequest.instance = null; // @method static GetInstance: Creates a singleton object of type XRequest. Should be called whenever an object of that type is required. // @return: an instance of a XRequest object XRequest.GetInstance = function() { if(XRequest.instance == null) { XRequest.instance = new XRequest(); } return XRequest.instance; } // @method static CreateXHR: Implments a basic factory method for creating a XMLHttpRequest object // @return: XMLHttp object or null XRequest.CreateXHR = function() { var xhr = null; var factory = [ function() { return new XMLHttpRequest(); }, function() { return new ActiveXObject("Msxml2.XMLHTTP"); }, function() { return new ActiveXObject("Microsoft.XMLHTTP"); } ]; for(var i = 0; i &lt; factory.length; ++i) { var f = factory[i]; xhr = f(); if(xhr) return xhr; } return null; } XRequest.prototype.SetRequestHeader = function(name, value) { if(this.XHR) { //alert(name+'|||'+value); this.XHR.setRequestHeader(name, value); } } XRequest.prototype.SendRequest = function(args) { var async = true; var type = ""; var url = ""; var username = ""; var password = ""; var body = null; var success = null; var failure = null; for(e in args) { switch(e) { case "async": async = args[e]; break; case "type": type = args[e]; break; case "success": success = args[e]; break; case "failure": failure = args[e]; break; case "url": url = args[e]; break; case "username": username = args[e]; break; case "password": password = args[e]; break; case "body": body = args[e]; break; } } var that = this; this.XHR.onreadystatechange = function() { alert("readyState == " + that.XHR.readyState + " status == " + that.XHR.status); if(that.XHR.readyState == 4) { if(that.XHR.status == 200 || that.XHR.status == 0) { if(success) success(that.XHR); } else { if(failure) failure(); } } }; this.XHR.open(type, url, async, username, password); for(e in args) { switch(e) { case "setHeader": var h = args[e].split(":"); if(h.length == 2) { this.SetRequestHeader(h[0], h[1]); } break; } } this.XHR.send(body); } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload