jQueryの$.ajaxでjsonpを使うと、errorハンドラが発火しない。jQuery+jsonpでエラーハンドリングが必要なケースは、jquery-jsonpを使う。
$.jsonp({
url: url,
dataType: 'jsonp',
callbackParameter: 'callback', // パラメータ名がjsonpではなくcallbackParameter
success: function(data, status) {},
error: function(XHR, textStatus, errorThrown){}
});
参考:jQuery ajax (jsonp) ignores a timeout and doesn't fire the error event