Я делаю вызов REST DELETE, который возвращает значение 204. В jQuery 1.8.3 это работает и обращается к обратному запросу request.done. Но если я использую 1.9, он переходит к request.fail с parsererror в textStatus и "SyntaxError: Неожиданный конец ввода" в errorThrown.
remove = function (complete) {
var self = this;
var request = $.ajax({
context: self,
url: "/v1/item/" + itemId,
dataType: "json",
type: "DELETE"
});
request.done(removeCallback);
request.fail(function (xhr, textStatus, errorThrown) {
alert(errorThrown);
});
},
Кто-нибудь знает, что изменилось в 1.9, что приведет к сбою, и что нужно изменить, чтобы исправить его?
Итак, отвечая на мой собственный вопрос, похоже, что это на самом деле проблема:
В руководстве по обновлению jQuery
jQuery.ajax возвращает результат JSON пустой строки
До 1.9, вызов ajax, ожидающий, что тип данных возврата JSON или JSONP будет рассматривать возвращаемое значение пустой строки как успешный случай, но возвращает значение null в обработчик или обещание. Начиная с 1.9, пустая строка, возвращаемая для данных JSON, считается некорректной JSON (потому что она есть); это приведет к ошибке. Используйте обработчик ошибок, чтобы поймать такие случаи.
Итак, если удалить dataType
dataType: "json",
Он работает в jQuery 1.8.3 и 1.9.