Skip to content
Permalink
Browse files

Make sure regular settings object is set as context for all Ajax requ…

…ests, if none is specified. Fixes #5838.
  • Loading branch information
jeresig committed Jan 16, 2010
1 parent 6618ff0 commit 155ecf42a0033785160e071507f0795b3c86a32b
Showing with 38 additions and 14 deletions.
  1. +1 −1 src/ajax.js
  2. +37 −13 test/unit/ajax.js
@@ -530,7 +530,7 @@ jQuery.extend({
handleError: function( s, xhr, status, e ) {
// If a local callback was specified, fire it
if ( s.error ) {
s.error.call( s.context || window, xhr, status, e );
s.error.call( s.context || s, xhr, status, e );
}

// Fire the global callback
@@ -95,7 +95,7 @@ test("jQuery.ajax() - abort", function() {
});

test("Ajax events with context", function() {
expect(6);
expect(14);

stop();
var context = document.createElement("div");
@@ -104,8 +104,16 @@ test("Ajax events with context", function() {
equals( this, context, e.type );
}

function callback(){
equals( this, context, "context is preserved on callback" );
function callback(msg){
return function(){
equals( this, context, "context is preserved on callback " + msg );
};
}

function nocallback(msg){
return function(){
equals( typeof this.url, "string", "context is settings on callback " + msg );
};
}

jQuery('#foo').add(context)
@@ -116,20 +124,36 @@ test("Ajax events with context", function() {

jQuery.ajax({
url: url("data/name.html"),
beforeSend: callback,
success: callback,
error: callback,
beforeSend: callback("beforeSend"),
success: callback("success"),
error: callback("error"),
complete:function(){
callback.call(this);
setTimeout(proceed, 300);
callback("complete").call(this);

jQuery.ajax({
url: url("data/404.html"),
context: context,
beforeSend: callback("beforeSend"),
error: callback("error"),
complete: function(){
callback("complete").call(this);

jQuery('#foo').add(context).unbind();

jQuery.ajax({
url: url("data/404.html"),
beforeSend: nocallback("beforeSend"),
error: nocallback("error"),
complete: function(){
nocallback("complete").call(this);
start();
}
});
}
});
},
context:context
});

function proceed(){
jQuery('#foo').add(context).unbind();
start();
}
});

test("jQuery.ajax() - disabled globals", function() {

0 comments on commit 155ecf4

Please sign in to comment.
You can’t perform that action at this time.