Makes sure statusCode callbacks are ordered in the same way success and error callbacks are. Unit tests added.

This commit is contained in:
jaubourg 2011-01-20 15:39:30 +01:00
parent 64e1cdbb95
commit 9ab00a712f
2 changed files with 34 additions and 7 deletions

View file

@ -427,10 +427,8 @@ jQuery.extend({
// Stored error
error,
// Keep track of statusCode callbacks
oldStatusCode = statusCode;
statusCode = undefined;
// To keep track of statusCode based callbacks
oldStatusCode;
// If successful, handle type chaining
if ( status >= 200 && status < 300 || status === 304 ) {
@ -588,6 +586,8 @@ jQuery.extend({
}
// Status-dependent callbacks
oldStatusCode = statusCode;
statusCode = undefined;
jXHR.statusCode( oldStatusCode );
if ( s.global ) {

View file

@ -1911,9 +1911,9 @@ test( "jQuery.ajax - Location object as url (#7531)", 1, function () {
test( "jQuery.ajax - statusCode" , function() {
var count = 10;
var count = 12;
expect( 16 );
expect( 20 );
stop();
function countComplete() {
@ -1975,8 +1975,35 @@ test( "jQuery.ajax - statusCode" , function() {
}
}).statusCode( createStatusCodes( "all (immediately with method)" , isSuccess ) );
});
var testString = "";
jQuery.ajax( url( uri ), {
success: function( a , b , jXHR ) {
ok( isSuccess , "success" );
var statusCode = {};
statusCode[ jXHR.status ] = function() {
testString += "B";
};
jXHR.statusCode( statusCode );
testString += "A";
},
error: function( jXHR ) {
ok( ! isSuccess , "error" );
var statusCode = {};
statusCode[ jXHR.status ] = function() {
testString += "B";
};
jXHR.statusCode( statusCode );
testString += "A";
},
complete: function() {
strictEqual( testString , "AB" , "Test statusCode callbacks are ordered like " +
( isSuccess ? "success" : "error" ) + " callbacks" );
countComplete();
}
} );
});
});
test("jQuery.ajax - active counter", function() {