Ваша проблема в том, что если JSONP не загружается, вся функция вообще не будет вызываться.
Теоретически, есть событие onerror
для элемента <script>
, которое вы можете использовать, но согласно этому вопросу оно не работает надежно в IE.
Однако этот вопрос показывает обходной путь, который также может работать для вас: встраивание скрипта, который устанавливает переменную, и проверка этой переменной впоследствии. Это будет вариант, если вы управляете удаленным приложением, которое вы вызываете.
Если это невозможно, я думаю, что единственное, что вы можете сделать, - это установить в функции обратного вызова флаг, подобный json_loaded = true;
, и использовать setTimeout
для проверки этого флага через несколько секунд. Если флаг не установлен, скрипт не загрузился, и вам нужно действовать соответственно.