diff mod_json_streams/strophe.jsonstreams.js @ 352:0b4fe47e648d

mod_json_streams/strophe.jsonstreams.js: Fix some compatability issues.
author Waqas Hussain <waqas20@gmail.com>
date Sat, 02 Apr 2011 04:27:43 +0500
parents 85d3c04c64f6
children 7dbde05b48a9
line wrap: on
line diff
--- a/mod_json_streams/strophe.jsonstreams.js	Sat Apr 02 03:11:22 2011 +0500
+++ b/mod_json_streams/strophe.jsonstreams.js	Sat Apr 02 04:27:43 2011 +0500
@@ -39,7 +39,8 @@
                 		return _xhr.send(data);
                 	}
                 };
-                xhr.onreadystatechange = _xhr.onreadystatechange;
+                var req = this;
+                xhr.onreadystatechange = this.func.bind(null, this);
                 _xhr.onreadystatechange = function() {
                 	xhr.readyState = _xhr.readyState;
                 	if (xhr.readyState != 4) {
@@ -50,7 +51,9 @@
 	                	xhr.status = _xhr.status;
 	               		xhr.responseText = _xhr.responseText;
 	               		xhr.responseXML = _xhr.responseXML;
-	                	if (_xhr.responseText && !_xhr.responseXML) {
+	                	if (_xhr.responseText && !(_xhr.responseXML
+	                			&& _xhr.responseXML.documentElement
+	                			&& _xhr.responseXML.documentElement.tagName != "parsererror")) {
 	                		var data = JSON.parse(_xhr.responseText);
 	                		if (data && data.s) {
 	                			xhr.responseText = data.s;
@@ -58,7 +61,7 @@
 	                		}
 	                	}
 	                }
-                	if (xhr.onreadystatechange) { xhr.onreadystatechange(); }
+                	if ("function" == typeof xhr.onreadystatechange) { xhr.onreadystatechange(req); }
                 }
                 return xhr;
             };