How to get the jQuery $.ajax error response text?
I am sending an error response to my jQuery. However, I can not get the response text (in the example below this would be Gone to the beach)
The only thing jQuery says is 'error'.
See this example for details:
php
<?
header('HTTP/1.1 500 Internal Server Error');
print "Gone to the beach"
?>
jQuery
$.ajax({
type: "post",
data: {id: 0},
cache: false,
url: "doIt.php",
dataType: "text",
error: function (request, error) {
console.log(arguments);
alert(" Can't do because: " + error);
},
success: function () {
alert(" Done ! ");
}
});
Now my result ist:
log:
[XMLHttpRequest readyState=4 status=500, "error", undefined]
alert:
Can't do because: error
Any ideas?
Try:
error: function(xhr, status, error) {
var err = eval("(" + xhr.responseText + ")");
alert(err.Message);
}
For me, this simply works:
error: function(xhr, status, error) {
alert(xhr.responseText);
}
Look at the responseText
property of the request parameter.
As ultimately suggested by this other answer and it's comments on this page:
error: function(xhr, status, error) {
var err = JSON.parse(xhr.responseText);
alert(err.Message);
}
The best simple approach :
error: function (xhr) {
var err = JSON.parse(xhr.responseText);
alert(err.message);
}