Fixes #9854: propagates native statusText onto jqXHR.statusText. statusText in callbacks is still normalized. Unit test added.

This commit is contained in:
jaubourg 2011-07-23 02:39:12 +02:00
parent 1d220cdd55
commit 0ed99097bd
3 changed files with 21 additions and 2 deletions

View File

@ -480,7 +480,7 @@ jQuery.extend({
// Callback for when everything is done // Callback for when everything is done
// It is defined here because jslint complains if it is declared // It is defined here because jslint complains if it is declared
// at the end of the function (which would be more logical and readable) // at the end of the function (which would be more logical and readable)
function done( status, statusText, responses, headers ) { function done( status, nativeStatusText, responses, headers ) {
// Called once // Called once
if ( state === 2 ) { if ( state === 2 ) {
@ -508,6 +508,7 @@ jQuery.extend({
var isSuccess, var isSuccess,
success, success,
error, error,
statusText = nativeStatusText,
response = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined, response = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,
lastModified, lastModified,
etag; etag;
@ -559,7 +560,7 @@ jQuery.extend({
// Set data for the fake xhr object // Set data for the fake xhr object
jqXHR.status = status; jqXHR.status = status;
jqXHR.statusText = statusText; jqXHR.statusText = "" + ( nativeStatusText || statusText );
// Success/Error // Success/Error
if ( isSuccess ) { if ( isSuccess ) {

5
test/data/statusText.php Normal file
View File

@ -0,0 +1,5 @@
<?php
header( "HTTP/1.0 $_GET[status] $_GET[text]" );
?>

View File

@ -2092,6 +2092,19 @@ test( "jQuery.ajax - Context with circular references (#9887)", 2, function () {
ok( success, "context with circular reference did not generate an exception" ); ok( success, "context with circular reference did not generate an exception" );
}); });
test( "jQuery.ajax - statusText" , 4, function() {
stop();
jQuery.ajax( url( "data/statusText.php?status=200&text=Hello" ) ).done(function( _, statusText, jqXHR ) {
strictEqual( statusText, "success", "callback status text ok for success" );
strictEqual( jqXHR.statusText, "Hello", "jqXHR status text ok for success" );
jQuery.ajax( url( "data/statusText.php?status=404&text=World" ) ).fail(function( jqXHR, statusText ) {
strictEqual( statusText, "error", "callback status text ok for error" );
strictEqual( jqXHR.statusText, "World", "jqXHR status text ok for error" );
start();
});
});
});
test( "jQuery.ajax - statusCode" , function() { test( "jQuery.ajax - statusCode" , function() {
var count = 12; var count = 12;