Я отправляю ответ об ошибке на мой 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:
журнал:
[XMLHttpRequest readyState=4 status=500, "error", undefined]
предупреждения:
Не могу сделать, потому что: ошибка
Есть идеи?
Пытаться:
error: function(xhr, status, error) { var err = eval("(" + xhr.responseText + ")"); alert(err.Message); }
Посмотрите на свойство responseText
параметра запроса.
Для меня это просто работает:
error: function(xhr, status, error) { alert(xhr.responseText); }
Это то, что сработало для меня
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 + '])'); });
Если вы хотите получить синтаксическую ошибку с номером строки, используйте эту
error: function(xhr, status, error) { alert(error); }
Это позволит вам увидеть весь ответ, а не только значение «responseText»
error: function(xhr, status, error) { var acc = [] $.each(xhr, function(index, value) { acc.push(index + ': ' + value); }); alert(JSON.stringify(acc)); }
Если у вас нет сетевой ошибки и вы хотите получить сообщение об ошибке из бэкэнд, за исключением недостаточных привилегий, ответьте сервер на 200 и сообщение об ошибке. Затем в вашем обработчике успеха проверьте data.status == 'error'