From 0ed99097bda3bb6e302c3d93331f0e7312e42077 Mon Sep 17 00:00:00 2001 From: jaubourg Date: Sat, 23 Jul 2011 02:39:12 +0200 Subject: [PATCH] Fixes #9854: propagates native statusText onto jqXHR.statusText. statusText in callbacks is still normalized. Unit test added. --- src/ajax.js | 5 +++-- test/data/statusText.php | 5 +++++ test/unit/ajax.js | 13 +++++++++++++ 3 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 test/data/statusText.php diff --git a/src/ajax.js b/src/ajax.js index 7bbfaf906..3b811b550 100644 --- a/src/ajax.js +++ b/src/ajax.js @@ -480,7 +480,7 @@ jQuery.extend({ // Callback for when everything is done // It is defined here because jslint complains if it is declared // 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 if ( state === 2 ) { @@ -508,6 +508,7 @@ jQuery.extend({ var isSuccess, success, error, + statusText = nativeStatusText, response = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined, lastModified, etag; @@ -559,7 +560,7 @@ jQuery.extend({ // Set data for the fake xhr object jqXHR.status = status; - jqXHR.statusText = statusText; + jqXHR.statusText = "" + ( nativeStatusText || statusText ); // Success/Error if ( isSuccess ) { diff --git a/test/data/statusText.php b/test/data/statusText.php new file mode 100644 index 000000000..daf58ce3f --- /dev/null +++ b/test/data/statusText.php @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/test/unit/ajax.js b/test/unit/ajax.js index 6af56db4f..ed6acda92 100644 --- a/test/unit/ajax.js +++ b/test/unit/ajax.js @@ -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" ); }); +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() { var count = 12; -- 2.39.5