ajax请求返回4xx时如何获取数据responseJSON?

时间:2018-10-15 14:39:01

标签: javascript c# asp.net ajax

我有这个Ajax请求

    $.ajax({
        url: 'Default.aspx/CreateNewCase',
        data: JSON.stringify(
            {id: ID }
        ),
        dataType: "json",
        type: "POST",
        contentType: "application/json; charset=utf-8",
        success: function (data, status) {
            //when server returns 200
            loadCase(ID, data);
        },
        error: function (data) {
            //when server returns 4xx. For example 409
            if(data.status == "409")
            {
                var newData = data.responseJSON;
                //error newData is undefined
                loadCase(ID, newData);
            }
        }
    });
    }

无论结果是200还是4xx,我的WebMethod都会始终返回一个对象。在ajax.success上,它返回一个JSON对象数据。但是在ajax.error上,我无法获取data.responseJSON。

我读过某个地方,JQuery阻止在发生错误后读取数据。我也尝试过.fail和.complete,但是当Ajax请求返回4xx时,我仍然无法获取该值。

我该如何解决?

1 个答案:

答案 0 :(得分:0)

所以我终于找到了答案。我必须在web.config的<system.webServer>内添加此参数:

  <system.webServer>
    <httpErrors errorMode="DetailedLocalOnly" existingResponse="PassThrough" >
      <clear/>
    </httpErrors>
  </system.webServer>

然后您可以像这样访问数据:

error: function (data, status) {
       if (data.status == "409") {
             var myData = data.responseJSON;

             //do stuff here
       }
}