Fixes #7868. ResponseText is now properly propagated for error callbacks.

This commit is contained in:
jaubourg 2011-01-09 04:53:29 +01:00
parent 69497c3fd7
commit d515068ee8
4 changed files with 34 additions and 9 deletions

View file

@ -464,6 +464,11 @@ jQuery.extend({
} else { // if not success, mark it as an error } else { // if not success, mark it as an error
error = error || statusText; error = error || statusText;
// Set responseText if needed
if ( response ) {
jXHR.responseText = response;
}
} }
// Set data for the fake xhr object // Set data for the fake xhr object

View file

@ -137,15 +137,13 @@ jQuery.ajax.transport( function( s , determineDataType ) {
status status
); );
// Guess response if needed & update datatype accordingly // Guess response & update dataType accordingly
if ( status >= 200 && status < 300 ) { response =
response = determineDataType(
determineDataType( s,
s, xhr.getResponseHeader("content-type"),
xhr.getResponseHeader("content-type"), xhr.responseText,
xhr.responseText, xhr.responseXML );
xhr.responseXML );
}
} }
// Call complete // Call complete

View file

@ -0,0 +1,5 @@
<?php
header("HTTP/1.0 400 Bad Request");
echo "plain text message";

View file

@ -240,6 +240,23 @@ test("jQuery.ajax() - error callbacks", function() {
}); });
}); });
test("jQuery.ajax() - responseText on error", function() {
expect( 1 );
stop();
jQuery.ajax({
url: url("data/errorWithText.php"),
error: function(xhr) {
strictEqual( xhr.responseText , "plain text message" , "Test jXHR.responseText is filled for HTTP errors" );
},
complete: function() {
start();
}
});
});
test(".ajax() - headers" , function() { test(".ajax() - headers" , function() {
expect( 2 ); expect( 2 );