Make sure regular settings object is set as context for all Ajax requests, if none is specified. Fixes #5838.
This commit is contained in:
parent
6618ff0b0a
commit
155ecf42a0
2 changed files with 38 additions and 14 deletions
|
@ -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() {
|
||||
|
|
Loading…
Reference in a new issue