Ответ 1
Try:
error: function(xhr, status, error) {
var err = eval("(" + xhr.responseText + ")");
alert(err.Message);
}
Я отправляю ответ об ошибке на мой jQuery. Тем не менее, я не могу получить текст ответа (в приведенном ниже примере это будет Gone to the beach)
Единственное, что говорит jQuery, это "ошибка".
Подробнее см. в этом примере:
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 ! ");
}
});
Теперь мой результат ist:
Журнал:
[XMLHttpRequest readyState=4 status=500, "error", undefined]
предупреждение:
Невозможно сделать, потому что: ошибка
Любые идеи?
Try:
error: function(xhr, status, error) {
var err = eval("(" + xhr.responseText + ")");
alert(err.Message);
}
Посмотрите на свойство responseText
параметра запроса.
Для меня это просто работает:
error: function(xhr, status, error) {
alert(xhr.responseText);
}
Как в конечном итоге предлагается этот другой ответ и он комментирует на этой странице:
error: function(xhr, status, error) {
var err = JSON.parse(xhr.responseText);
alert(err.Message);
}
Это то, что сработало для меня
function showErrorMessage(xhr, status, error) {
if (xhr.responseText != "") {
var jsonResponseText = $.parseJSON(xhr.responseText);
var jsonResponseStatus = '';
var message = '';
$.each(jsonResponseText, function(name, val) {
if (name == "ResponseStatus") {
jsonResponseStatus = $.parseJSON(JSON.stringify(val));
$.each(jsonResponseStatus, function(name2, val2) {
if (name2 == "Message") {
message = val2;
}
});
}
});
alert(message);
}
}
вы также можете попробовать:
$(document).ajaxError(
function (event, jqXHR, ajaxSettings, thrownError) {
alert('[event:' + event + '], [jqXHR:' + jqXHR + '], [ajaxSettings:' + ajaxSettings + '], [thrownError:' + thrownError + '])');
});
Это позволит вам увидеть весь ответ, а не только значение "responseText"
error: function(xhr, status, error) {
var acc = []
$.each(xhr, function(index, value) {
acc.push(index + ': ' + value);
});
alert(JSON.stringify(acc));
}
Если вы хотите получить Синтаксическую ошибку с номером строки, используйте этот
error: function(xhr, status, error) {
alert(error);
}
Лучший простой подход:
error: function (xhr) {
var err = JSON.parse(xhr.responseText);
alert(err.message);
}
Я использовал это, и это сработало отлично.
error: function(xhr, status, error){
alertify.error(JSON.parse(xhr.responseText).error);
}
Если у вас нет сетевой ошибки и вы хотите получить сообщение об ошибке из бэкэнд, чтобы исключить недостаточные привилегии, отправьте ответ на ваш сервер с сообщением 200 и сообщением об ошибке. Затем в вашем обработчике успеха проверьте data.status == 'error'