Что изменилось в jQuery 1.9, чтобы вызвать ошибку $ .ajax с ошибкой синтаксиса
Я делаю вызов 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, рассматривал возвращаемое значение пустой строки как случай успеха, но возвращал нулевое значение обработчику успеха или обещанию. Начиная с версии 1.9, пустая строка, возвращаемая для данных JSON, считается искаженным JSON (потому что это так); это теперь выдаст ошибку. Используйте обработчик ошибок, чтобы поймать такие случаи.
Итак, если удалить dataType
dataType: "json",
Работает в jQuery 1.8.3 и 1.9.