web-dev-qa-db-ja.com

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

何か案は?

209
jantimon

試してください:

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

要求パラメーターのresponseTextプロパティーを調べてください。

50
tvanfosson

私にとっては、これは単にうまくいきます:

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

最終的に この他の答えによって示唆されるように、それはこのページの上のコメント です:

error: function(xhr, status, error) {
  var err = JSON.parse(xhr.responseText);
  alert(err.Message);
}
12
Brad Parks

これは私のために働いたものです

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

これにより、 "responseText"値だけでなく、レスポンス全体を見ることができます。

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

あなたもそれを試すことができます:

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

行番号付きの構文エラーを取得したい場合は、これを使用してください。

error: function(xhr, status, error) {
  alert(error);
}
2
Karthikeyan P

最も簡単なアプローチ:

error: function (xhr) {
var err = JSON.parse(xhr.responseText);
alert(err.message);
}
1
Mazen Embaby

私はこれを使用し、完全に機能しました。

error: function(xhr, status, error){
     alertify.error(JSON.parse(xhr.responseText).error);
}
0