2016-09-22 4 views
1

Можно ли принудительно вызвать функцию $.getJSON(), чтобы поднять ошибку, когда мы пытаемся получить HTML-код (не application/json). Кажется, что это отложенное просто возвращает пустой объект тогда (или сделан).

Как мы можем найти в then обработчик, который content-type был обработан в ответ? У меня возникла ситуация, когда сервер может возвращать HTML вместо JSON, когда служба недоступна.

+0

почему вы не просто выбросить исключение в обработчик, когда ответ является пустым, то? –

+0

На самом деле это довольно просто, если статус 20x, и ответ может успешно проанализироваться с помощью $ .parseJSON, считается успешным. Он игнорирует контент-тип, потому что разработчики часто забывают его вернуть. Вы должны проверить значение null в. Then и вызывать обещание отклонить, если это пустая или пустая строка (или исправить сервер). –

ответ

1

$.getJSON() не работает, когда ответ text/html. Смотрите этот пример:

$.getJSON('http://httpbin.org/html') 
 
    .then(() => console.log('success'),() => console.log('error'))
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

Спасибо. Это определенно так, кажется, что мы используем $ .ajax где-то без указания правильного типа контента. – yavalvas