[javascript] 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 ! ");
    }
});

이제 내 결과는 다음과 같습니다.

로그:

 [XMLHttpRequest readyState=4 status=500, "error", undefined]

경보:

할 수없는 이유 : error

어떤 아이디어?



답변

시험:

error: function(xhr, status, error) {
  var err = eval("(" + xhr.responseText + ")");
  alert(err.Message);
}


답변

나에게 이것은 간단하게 작동합니다.

error: function(xhr, status, error) {
  alert(xhr.responseText);
}


답변

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);
        }
    }


답변

이를 통해 “responseText”값뿐만 아니라 전체 응답을 볼 수 있습니다.

error: function(xhr, status, error) {
    var acc = []
    $.each(xhr, function(index, value) {
        acc.push(index + ': ' + value);
    });
    alert(JSON.stringify(acc));
}


답변

당신도 그것을 시도 할 수 있습니다 :

$(document).ajaxError(
    function (event, jqXHR, ajaxSettings, thrownError) {
        alert('[event:' + event + '], [jqXHR:' + jqXHR + '], [ajaxSettings:' + ajaxSettings + '], [thrownError:' + thrownError + '])');
    });