Added onSuccess and onError callbacks for the $.xml() function.
authorJohn Resig <jeresig@gmail.com>
Fri, 16 Jun 2006 02:43:04 +0000 (02:43 +0000)
committerJohn Resig <jeresig@gmail.com>
Fri, 16 Jun 2006 02:43:04 +0000 (02:43 +0000)
ajax/ajax.js

index 21a9934..8e0f81f 100644 (file)
@@ -13,6 +13,15 @@ if ( typeof XMLHttpRequest == 'undefined' && typeof window.ActiveXObject == 'fun
 $.xmlActive=0;
 
 $.xml = function( type, url, data, ret ) {
+       if ( !url ) {
+               ret = type.onComplete;
+               var onSuccess = type.onSuccess;
+               var onError = type.onError;
+               data = type.data;
+               url = type.url;
+               type = type.type;
+       }
+
        var xml = new XMLHttpRequest();
 
        if ( xml ) {
@@ -24,7 +33,8 @@ $.xml = function( type, url, data, ret ) {
                // Set header so calling script knows that it's an XMLHttpRequest
                xml.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
 
-               /* Force "Connection: close" for Mozilla browsers to work around
+               /* Borrowed from Prototype:
+                * Force "Connection: close" for Mozilla browsers to work around
                 * a bug where XMLHttpReqeuest sends an incorrect Content-length
                 * header. See Mozilla Bugzilla #246651.
                 */
@@ -53,6 +63,13 @@ $.xml = function( type, url, data, ret ) {
                                        $.xmlActive = 0
                                }
 
+                               if ( xml.status && xml.status >= 200 && xml.status < 300 ) {
+                                       if ( onSuccess )
+                                               onSuccess( xml );
+                               } else if ( onError ) {
+                                       onError( xml );
+                               }
+
                                // Process result
                                if ( ret )
                                        ret(xml);