Я использую jQuery_2.1.1, и у меня была похожая проблема. PUT перешел к обработчику ошибок (). Моя основная часть вызова REST API -
- PUT по пути именованного ключа (/ rest / properties / mykey1): 204 = Обновлен существующий объект, 201 = Создан новый объект и возвращен заголовок Location, XXX = все остальное, больше всего похожее на ошибку
- POST к неизвестному ключевому пути (/ rest / properties): 201 = Создан новый объект и возвращен заголовок Location, XXX = все остальное, что больше всего похоже на ошибку
Http-статус 204 - это NoContent, поэтому с jQuery все было в порядке, но 201 = Создан ожидал объект тела json, но я вернул часть тела нулевой длины. Адрес ресурса был указан в заголовке ответа местоположения.
Я могу вернуть объект json в зависимости от нескольких угловых случаев, поэтому пришлось использовать атрибут datatype: "json". Моим решением jQuery была ошибка () для проверки состояния 201 и функция вызова ().
$.ajax({
url: "/myapp/rest/properties/mykey1",
data: jsonObj,
type: "PUT",
headers: { "Accept":"application/json", "Content-Type":"application/json" },
timeout: 30000,
dataType: "json",
success: function(data, textStatus, xhr) {
data="Server returned " + xhr.status;
if (xhr.status==201) data+=" "+xhr.getResponseHeader("location");
$("#ajaxreply").text(data);
},
error: function(xhr, textStatus, ex) {
if (xhr.status==201) { this.success(null, "Created", xhr); return; }
$("#ajaxreply").text( textStatus + "," + ex + "," + xhr.responseText );
}
});