Как получить 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]


предупреждение:




не могу, потому что: ошибка




какие идеи?

887   11  

11 ответов:

попробуй:

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 + '])');
    });

Это позволит вам увидеть весь ответ, а не только значение" 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

    Ничего не найдено.