Ответ 1
Объекты jqXHR, возвращаемые $.ajax() из jQuery 1.5, реализуют интерфейс Promise. Третий аргумент в выполненной функции - это объект jqXHR. Этот объект имеет свойство для кода состояния http результата.
jqXHR.done(функция (data, textStatus, jqXHR) {}); Альтернатива построить для опции обратного вызова успеха, метод .done() заменяет устаревший метод jqXHR.success(). Обратитесь к разделу deferred.done() для осуществление подробности. ссылка
$.ajax({
url: "http://fiddle.jshell.net/favicon.png",
beforeSend: function ( xhr ) {
xhr.overrideMimeType("text/plain; charset=x-user-defined");
}
}).done(function ( data, textStatus, jqXHR) {
console.log(jqXHR.status); //handle your 204 or other status codes here
});
Fiddle http://jsfiddle.net/puleos/fVa7X/
Предполагая, что вы хотите обрабатывать все коды статуса не 200, как ошибку, вы можете сделать что-то вроде этого:
var p = $.ajax({
url: "http://fiddle.jshell.net/favicon.png",
beforeSend: function ( xhr ) {
xhr.overrideMimeType("text/plain; charset=x-user-defined");
}
});
p.done(function(data, textStatus, jqXHR) {
if(jqXHR.status !== 200) {
handleError(jqXHR.status);
return;
}
// Normal processing here
});
p.fail(function(jqXHR, textStatus) {
handleError(jqXHR.status);
});