Fixed spacing on the modified Ajax code.
[jquery.git] / src / ajax.js
index 858ac4b..3416dd6 100644 (file)
@@ -15,6 +15,10 @@ jQuery.fn.extend({
        load: function( url, params, callback ) {
                if ( typeof url !== "string" ) {
                        return this._load( url );
+
+               // Don't do a request if no elements are being requested
+               } else if ( !this.length ) {
+                       return this;
                }
 
                var off = url.indexOf(" ");
@@ -102,7 +106,7 @@ jQuery.fn.extend({
 });
 
 // Attach a bunch of functions for handling common AJAX events
-jQuery.each( "ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","), function(i,o){
+jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), function(i,o){
        jQuery.fn[o] = function(f){
                return this.bind(o, f);
        };
@@ -194,7 +198,7 @@ jQuery.extend({
        ajax: function( s ) {
                // Extend the settings, but re-extend 's' so that it can be
                // checked again later (in the test suite, specifically)
-               s = jQuery.extend(true, s, jQuery.extend(true, {}, jQuery.ajaxSettings, s));
+               s = jQuery.extend(true, {}, jQuery.ajaxSettings, s);
                
                var jsonp, status, data,
                        callbackContext = s.context || window,
@@ -334,16 +338,16 @@ jQuery.extend({
                                xhr.setRequestHeader("Content-Type", s.contentType);
                        }
 
-                               // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
-                               if ( s.ifModified ) {
-                                       if ( jQuery.lastModified[s.url] ) {
-                                               xhr.setRequestHeader("If-Modified-Since", jQuery.lastModified[s.url]);
-                                       }
+                       // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+                       if ( s.ifModified ) {
+                               if ( jQuery.lastModified[s.url] ) {
+                                       xhr.setRequestHeader("If-Modified-Since", jQuery.lastModified[s.url]);
+                               }
 
-                                       if ( jQuery.etag[s.url] ) {
-                                               xhr.setRequestHeader("If-None-Match", jQuery.etag[s.url]);
-                                       }
+                               if ( jQuery.etag[s.url] ) {
+                                       xhr.setRequestHeader("If-None-Match", jQuery.etag[s.url]);
                                }
+                       }
 
                        // Set header so the called script knows that it's an XMLHttpRequest
                        xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
@@ -457,6 +461,8 @@ jQuery.extend({
                        xhr.send( type === "POST" || type === "PUT" ? s.data : null );
                } catch(e) {
                        jQuery.handleError(s, xhr, null, e);
+                       // Fire the complete handlers
+                       complete();
                }
 
                // firefox 1.5 doesn't fire statechange for sync requests
@@ -467,7 +473,7 @@ jQuery.extend({
                function success(){
                        // If a local callback was specified, fire it and pass it the data
                        if ( s.success ) {
-                               s.success.call( callbackContext, data, status );
+                               s.success.call( callbackContext, data, status, xhr );
                        }
 
                        // Fire the global callback