jQuery:发生错误Http 5XX或错误4XX时获取响应

时间:2018-09-05 20:51:47

标签: jquery ajax http

在我的脚本中,我通过使用documentation中提到的statusCode对象来处理错误4XX或错误5XX。我做的ajax调用的一个玩具示例是:

$("someform").on("submit",function(e){
  e.preventDefault();

  var self=this; //To avoid Confusion using this
  var url=$(self).attr('action');

  $.ajax({
      'method': "POST",
      'url': url,
      'data': $(self).serialize(),
      'statusCode': {
        400: function(data,textStatus,jqXHR) {
          console.log(data.something);
        }
       }
  })
})

我的服务器端代码返回以下响应:

{
  'something':"Hello, you did it wrong"
}

但是console.log响应

  

未确认

如何获取正确的值?

1 个答案:

答案 0 :(得分:0)

发生错误400时,data.responseJSON中的响应导致此代码:

$("someform").on("submit",function(e){
  e.preventDefault();

  var self=this; //To avoid Confusion using this
  var url=$(self).attr('action');

  $.ajax({
      'method': "POST",
      'url': url,
      'data': $(self).serialize(),
      'statusCode': {
        400: function(data,textStatus,jqXHR) {
          data=data.responseJSON;
          console.log(data.something);
        }
       }
  })
})

根据经验,当您处理错误5xx或错误4xx并期望json响应时,只需将数据设置为值data.responseJSON,就可以了。