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