13

进行 ajax 调用时,请参见下面的示例success确实会重新调整201状态。您如何更好地处理这些成功函数中的 200、201?

$.ajax({
    type: "POST",
    dataType: "json",
    url: "http://api.domain.com/sms",
    data: {
      // Send value in mobile input field.
      mobile: $("#mobile").val(),
    },
    // On successful AJAX call do the following.
    success: function(data) {
      $('#messageText').text('SMS successfully sent');
    },
    error: function(jqXhr) {
      data = JSON.parse(jqXhr.responseText);
    }
});
4

5 回答 5

18

使用statusCode对象:

var handle200 = function(data, textStatus, jqXHR) {
    alert('200'); // success codes have the success signature
};

var handle201 = function(data, textStatus, jqXHR) {
    alert('201'); // success codes have the success signature
    // test it if you are in doubt:
    console.log(data);
    console.log(textStatus);
    console.log(jqXHR);
};

var handle404 = function(jqXHR, textStatus, errorThrown) {
    alert('404'); // failing codes have the error signature
});

var request = $.ajax({
    type: 'POST',
    url: '/myresource/posttarget',
    data: { name: 'john' },
    statusCode: {
        200: handle200,
        201: handle201,
        404: handle404
    }
});
于 2013-03-16T01:19:43.990 回答
11

这是一个老问题,但我还是想发表评论。

我遇到了同样的问题,为我解决的一件事是未设置“dataType”。当您执行此操作时,jQuery 将尝试猜测服务器返回的数据类型,并且当您的服务器返回没​​有内容的 201 时不会抛出错误。

希望能帮助到你。

于 2016-01-14T12:43:48.380 回答
1

我们遇到了类似的问题;查看 jquery 1.9 源代码,201 状态代码需要内容。如果 201 没有返回内容(或内容类型错误),则调用失败回调。

于 2014-08-13T06:00:52.553 回答
0

数据插入成功但jquery仍然返回错误

这里的答案似乎是您现在可以使用的解决方法。但是,如果您使用跨域,AJAX 有一些问题。看看这个 SOF 线程:

从 jQuery AJAX 读取 HTTP 状态/错误代码的问题

于 2012-09-13T15:49:11.040 回答
0

代替

ResponseEntity<?> responseEntity = new ResponseEntity<>(HttpStatus.CREATED);

我用了

ResponseEntity<?> responseEntity = new ResponseEntity<>(detailVO, HttpStatus.CREATED);

如果成功,detailVO 是我的目标。然后在浏览器中我得到了成功功能的响应。

于 2019-05-09T14:39:09.170 回答