Подтвердить что ты не робот

Как обрабатывать ajax 201

При выполнении вызова 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);
    }
});
4b9b3361

Ответ 1

Используйте объект 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
    }
});

Ответ 2

Это старый вопрос, но я все равно хочу прокомментировать.

У меня была такая же проблема, и одна вещь, которая разрешила это для меня, оставила "dataType" незавершенной. Когда вы это сделаете, jQuery попытается угадать тип данных, который возвращает сервер, и не будет вызывать ошибку, когда ваш сервер вернет 201 без содержимого.

Надеюсь, что это поможет.

Ответ 3

Данные вставлены успешно, но jquery все еще возвращает ошибку

Ответ здесь - это работа, которую вы можете использовать сейчас. Однако, если вы используете кросс-домен, у AJAX есть некоторые проблемы с этим. Проверьте этот поток SOF на нем:

Проблемы с чтением HTTP-кода состояния/ошибки из jQuery AJAX

Ответ 4

У нас была аналогичная проблема; Глядя на источник jquery 1.9, код состояния 201 ожидает контента. Если нет содержимого (или неправильного типа содержимого), возвращаемого с 201, тогда вызывается обратный вызов отказа.

Ответ 5

Вместо

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

я использовал

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

Где detailVO - мой объект для рутруна в случае успеха. Затем в браузере я получил ответ в функции успеха.