Я почти уверен (не полностью), что dataType jsonp неправильно обрабатывает не-200 http коды состояния. Причина в том, что JSONP на самом деле работает. На странице википедии это объясняется лучше: http://en.wikipedia.org/wiki/JSONP,, но в основном jsonp означает добавление элемента script на страницу с указанным вами URL. И тело элемента script является вызовом функции. Если вы получите какой-либо код состояния! = До 200, то этого тела не будет, и никакая функция не будет вызываться (которая в конечном итоге вызывает функции обратного вызова).
Итак, если вы продолжите использовать jsonp, вам понадобится какой-то тайм-аут в ожидании ответа и ожидание сбоя запроса или какой-либо другой метод.