无法解析Ajax调用错误部分中的json对象值

时间:2018-06-07 16:20:40

标签: javascript jquery json ajax

我对其他Web API进行了以下Ajax调用: -

$.ajax({
    url: "/********/getbytitle('****')/items",
    type: "POST",
    contentType: "application/json;odata=verbose",
    data: JSON.stringify(item),
    headers: {
        "Accept": "application/json;odata=verbose",
        "X-RequestDigest": $("#__REQUESTDIGEST").val()
    },
    success: function (data) {

            if(data.d != null){

    //code goes here..

}

    },
    error: function (data) {
        alert(data.error.message.value);

        $("#customloader").hide();
    }
});

error部分内部,我想使用alert(data.error.message.value);捕获错误消息值,但我在浏览器控制台中收到以下错误: -

data.error.message.value is undefined!!

虽然JSON对象具有以下格式: -

enter image description here

现在如上图所示,如果用户未获得授权,则会返回错误。当收到未经授权的请求时,我们的应用程序将显示用户名/密码对话框..但我想在用户名/密码对话框旁边显示警告,其中包含json错误消息..

1 个答案:

答案 0 :(得分:2)

问题是因为error处理程序的第一个参数是XHR对象,而不是解析的JSON响应。

要根据需要使其工作,您需要自己从XHR获取responseText并手动解析它,然后再尝试阅读value属性。试试这个:

error: function(xhr) {
  var data = JSON.parse(xhr.responseText);
  console.log(data.error.message.value);

  $("#customloader").hide();
}