jQuery $ .ajaxエラー応答テキストを取得するにはどうすればよいですか?

2009年10月28日に質問されました。  ·  閲覧回数 601.4k回  ·  ソース

jantimon picture
2009年10月28日

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]

警告:

できない理由:エラー

何か案は?

回答

Alex Bagnolini picture
2009年10月28日
319

試してください:

error: function(xhr, status, error) {
  var err = eval("(" + xhr.responseText + ")");
  alert(err.Message);
}
HaoQi Li picture
2013年08月16日
53

私にとって、これは単純に機能します。

error: function(xhr, status, error) {
  alert(xhr.responseText);
}
tvanfosson picture
2009年10月28日
51

リクエストパラメータのresponseTextプロパティを見てください。

Brad Parks picture
2016年05月05日
17

この他の回答とこのページように

error: function(xhr, status, error) {
  var err = JSON.parse(xhr.responseText);
  alert(err.Message);
}
user3255682 picture
2014年01月31日
7

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

    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);
        }
    }
Mazen Embaby picture
2018年04月20日
6

最も簡単なアプローチ:

error: function (xhr) {
var err = JSON.parse(xhr.responseText);
alert(err.message);
}
Kareem picture
2016年03月15日
4

これにより、「responseText」値だけでなく、応答全体を確認できます。

error: function(xhr, status, error) {
    var acc = []
    $.each(xhr, function(index, value) {
        acc.push(index + ': ' + value);
    });
    alert(JSON.stringify(acc));
}
85tisgirjetuji8 picture
2011年11月25日
3

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

$(document).ajaxError(
    function (event, jqXHR, ajaxSettings, thrownError) {
        alert('[event:' + event + '], [jqXHR:' + jqXHR + '], [ajaxSettings:' + ajaxSettings + '], [thrownError:' + thrownError + '])');
    });
Karthikeyan P picture
2015年10月09日
3

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

error: function(xhr, status, error) {
  alert(error);
}
Juan Silup&#250; Maza picture
2019年08月16日
0

私はこれを使用しました、そしてそれは完全に働きました。

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