Don't set the context in .load() as it stops the global ajax events from firing....
authorJohn Resig <jeresig@gmail.com>
Mon, 25 Jan 2010 02:58:32 +0000 (21:58 -0500)
committerJohn Resig <jeresig@gmail.com>
Mon, 25 Jan 2010 02:58:32 +0000 (21:58 -0500)
src/ajax.js
test/unit/ajax.js

index 552d412..d92d26d 100644 (file)
@@ -45,18 +45,19 @@ jQuery.fn.extend({
                        }
                }
 
+               var self = this;
+
                // Request the remote document
                jQuery.ajax({
                        url: url,
                        type: type,
                        dataType: "html",
                        data: params,
-                       context:this,
                        complete: function( res, status ) {
                                // If successful, inject the HTML into all the matched elements
                                if ( status === "success" || status === "notmodified" ) {
                                        // See if a selector was specified
-                                       this.html( selector ?
+                                       self.html( selector ?
                                                // Create a dummy div to hold the results
                                                jQuery("<div />")
                                                        // inject the contents of the document in, removing the scripts
@@ -71,7 +72,7 @@ jQuery.fn.extend({
                                }
 
                                if ( callback ) {
-                                       this.each( callback, [res.responseText, status, res] );
+                                       self.each( callback, [res.responseText, status, res] );
                                }
                        }
                });
index 4f90126..cd3aba0 100644 (file)
@@ -70,6 +70,30 @@ test("jQuery.ajax() - error callbacks", function() {
        });
 });
 
+test(".load()) - 404 error callbacks", function() {
+       expect( 6 );
+       stop();
+
+       jQuery('#foo').ajaxStart(function(){
+               ok( true, "ajaxStart" );
+       }).ajaxStop(function(){
+               ok( true, "ajaxStop" );
+               start();
+       }).ajaxSend(function(){
+               ok( true, "ajaxSend" );
+       }).ajaxComplete(function(){
+               ok( true, "ajaxComplete" );
+       }).ajaxError(function(){
+               ok( true, "ajaxError" );
+       }).ajaxSuccess(function(){
+               ok( false, "ajaxSuccess" );
+       });
+
+       jQuery("<div/>").load("data/404.html", function(){
+               ok(true, "complete");
+       });
+});
+
 test("jQuery.ajax() - abort", function() {
        expect( 6 );
        stop();