Intereting Posts
Неустранимая обработка ошибок в Yii Yii ajaxSubmitButton () с проверкой полей Получайте содержимое корзины за пределами Magento, но в том же домене Как ограничить доступ к содержимому WordPress в приложении .NET / PHP PHPMailer не отправляет CC или BCC Сохраненная функция, используемая во вставке, через PHP работает несколько раз Приложение C # должно отправлять некоторые данные на веб-сайт php, но должно уважать политику аутентификации Используя PHP для отправки изображения в Cheezburger, json_decode не будет обрабатывать ответ Установка глобальной переменной в Magento, GUI? Примечание. Неопределенный индекс: HTTP_REFERER PHPUnit не может найти исходный код Echo boolean field как yes / no или другие значения Избегайте общей папки laravel и открывайте непосредственно корень на веб-сервере Самый короткий способ проверить, содержит ли переменная положительное целое число с помощью PHP? Команда Exec работает не так, как ожидалось

Как получить текст ответа об ошибке 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:

журнал:

  [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'