¿Qué cambió en jQuery 1.9 para hacer que una llamada $ .ajax falle con un error de sintaxis?
Estoy haciendo una llamada REST DELETE, que devuelve un 204. En jQuery 1.8.3 esto funciona, y golpea la petición de devolución de llamada. Pero si uso 1.9 va a request.fail con un parsererror en textStatus y un 'SyntaxError: Fin inesperado de entrada' en el 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);
});
},
¿Alguien sabe qué ha cambiado en 1.9 que causaría que esto fallara, y qué necesita cambiar para solucionarlo?
Entonces, respondiendo a mi propia pregunta, parece que este es de hecho el problema:
Desde elGuía de actualización de jQuery
jQuery.ajax devolviendo un resultado JSON de una cadena vacíaAntes de 1.9, una llamada ajax que esperaba un tipo de datos de retorno de JSON o JSONP consideraría que un valor de retorno de una cadena vacía es un caso de éxito, pero devuelve un valor nulo al controlador o promesa de éxito. A partir de la 1.9, una cadena vacía devuelta para los datos JSON se considera JSON con formato incorrecto (porque lo es); esto ahora lanzará un error. Utilice el controlador de errores para detectar tales casos.
Por lo tanto, si elimina el dataType
dataType: "json",
Funciona en jQuery 1.8.3 y 1.9.