Как вернуть обратный вызов.fail(), если возвращаемый dataType не является HTML?
Как я могу вернуть обратный вызов .fail(), если возвращаемый dataType не является HTML?
$.ajax({
type: "GET",
dataType: "html",
url: "server.php",
async: true,
beforeSend: function() {
},
success: function (returndata) {
console.log(returndata); // I will get {"message":"something"}
}
}).fail(function(jqXHR) { // this callback does not work
alert("error");
});
Например, в server.php
,
header('Content-Type: application/json');
echo '{"message":"something"}';
я получу {"message":"something"}
вместо error
;
есть идеи?
редактировать:
$.ajax({
type: "GET",
dataType: "xml",
url: "server.php",
async: true,
beforeSend: function() {
},
success: function (returndata) {
console.log(returndata); // I will get {"message":"something"}
}
}).fail(function(jqXHR) { // this callback does not work
alert("error");
});
если я изменю dataType:
в "XML", он вернет ошибку (что я и хочу), когда ожидается XML - почему это не работает таким же образом для "HTML"?
1 ответ
Проверьте, отвечает ли ваш сервер JSON как кодировка простого текста или application/JSON. Если это JSON, используйте метод error() вместо fail(). В случае несоответствия типов контента он перейдет к методу ошибки. Вот пример.
$.ajax({
type: "GET",
dataType: "JSON",
url: "google.com",
async: true,
success: function(data) {
},
error: function(err) {
console.log("Err", err)
}
});
Приведенный выше код будет нормально работать с методом ошибки и перейдет к ошибке, если тип содержимого html. Попробуйте это в вашем сценарии.