ОБНОВЛЕНИЕ : Поскольку вы создаете виджет Dashboard, я провел несколько тестов.
Я обнаружил, что вызов $.ajax
фактически вызвал ошибку, когда не было подключения к интернету. Поэтому я с большим успехом занялся созданием объекта XMLHTTPRequest вручную. Если вам нужен синтаксический анализ JSON, я предлагаю также включить json2.js парсер.
Что я сделал, чтобы сделать эту работу:
- В Атрибуты виджета в Dashcode Я нажал «Разрешить доступ к сети» (Если вы не используете Dashcode, проверьте документы для правильной настройки plist, чтобы включить это)
- Я использовал следующий код:
var xhr = new XMLHttpRequest();
xhr.addEventListener('readystatechange', state_change, true);
xhr.open("GET", url, true);
xhr.send(null);
function state_change(){
if(xhr.readyState == 4){
if(xhr.status == 200){
console.log('worked'); // Only works if running in Dashcode
// use xhr.responseText or JSON.parse(xhr.responseText)
} else if(xhr.status == 0) {
console.log('no internet'); // Only works if running in Dashcode
} else {
// Some other error
}
}
}
/ Окончание обновления
Я ответил на это, отредактировав свой ответ на ваш оригинальный вопрос , так как вы задали его в комментариях. После комментирования я увидел, что вы разместили этот вопрос.
Чтобы подвести итог, добавьте параметр timeout
к вашему вызову $.ajax
и установите для него меньшее число (например, 5000 миллисекунд). Ваша функция ошибки будет вызвана после истечения времени ожидания запроса.