If the XHR object no longer exists assume that the request was aborted.
[jquery.git] / src / ajax.js
index 9a84302..7760593 100644 (file)
@@ -296,7 +296,9 @@ jQuery.extend({
 
                                                // Handle memory leak in IE
                                                script.onload = script.onreadystatechange = null;
-                                               head.removeChild( script );
+                                               if ( head && script.parentNode ) {
+                                                       head.removeChild( script );
+                                               }
                                        }
                                };
                        }
@@ -368,7 +370,7 @@ jQuery.extend({
                // Wait for a response to come back
                var onreadystatechange = function(isTimeout){
                        // The request was aborted, clear the interval and decrement jQuery.active
-                       if ( xhr.readyState === 0 ) {
+                       if ( !xhr || xhr.readyState === 0 ) {
                                if ( ival ) {
                                        // clear poll interval
                                        clearInterval( ival );
@@ -449,7 +451,7 @@ jQuery.extend({
 
                // Send the data
                try {
-                       xhr.send( type === "POST" ? s.data : null );
+                       xhr.send( type === "POST" || type === "PUT" ? s.data : null );
                } catch(e) {
                        jQuery.handleError(s, xhr, null, e);
                }