Как получить jQuery $.текст ответа на ошибку ajax?
Я посылаю ответ на ошибку в мой jQuery.
Однако, я не могу получить текст ответа (в примере ниже это будет пошел на пляж)
единственное, что говорит 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:
log:
[XMLHttpRequest readyState=4 status=500, "error", undefined]
предупреждение:
не могу, потому что: ошибка
какие идеи?
11 ответов:
попробуй:
error: function(xhr, status, error) { var err = eval("(" + 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); } }
как в конечном счете предложил это другой ответ, и это комментарии на странице:
error: function(xhr, status, error) { var err = JSON.parse(xhr.responseText); alert(err.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); }
Если у вас нет сетевой ошибки и вы хотите получить сообщение об ошибке из бэкэнда, например, недостаточные привилегии, Отправьте свой ответ С 200 и сообщением об ошибке. Затем в обработчике успеха проверьте данные.статус == 'ошибка'
лучший простой подход :
error: function (xhr) { var err = JSON.parse(xhr.responseText); alert(err.message); }
функция showErrorMessage(xhr, статус, ошибка) { если (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); } }
Comments