Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.09.2014, 13:35
Профессор
Отправить личное сообщение для Dimaz Посмотреть профиль Найти все сообщения от Dimaz
 
Регистрация: 25.12.2009
Сообщений: 222

Как очистить таймер, если сервер вернул ответ?
По истечении 10 секунд скрипт должен выдать ошибку, если нет ответа от сервера. Если же ответ есть, таймер должен быть очищен. Но этого не происходит. Что тут не так?
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'blob';
xhr.onreadystatechange = function(){
if(xhr.readyState != 4) return;
clearTimeout(timeout);
if(xhr.status != 404){
//какой-то код
} else {
console.log(xhr.readyState);
}
}
xhr.send();
var timeout = setTimeout(function(){
xhr.abort();
console.log("Сервер не отвечает.");
},10000);
Ответить с цитированием
  #2 (permalink)  
Старый 20.09.2014, 15:00
Аспирант
Отправить личное сообщение для d.skuratovich Посмотреть профиль Найти все сообщения от d.skuratovich
 
Регистрация: 19.09.2014
Сообщений: 73

Переменная timeout не определена у тебя до ее вызова
Ответить с цитированием
  #3 (permalink)  
Старый 20.09.2014, 15:21
Профессор
Отправить личное сообщение для Dimaz Посмотреть профиль Найти все сообщения от Dimaz
 
Регистрация: 25.12.2009
Сообщений: 222

Сообщение от d.skuratovich Посмотреть сообщение
Переменная timeout не определена у тебя до ее вызова
где же её тогда нужно определить?
Ответить с цитированием
  #4 (permalink)  
Старый 20.09.2014, 15:23
Аспирант
Отправить личное сообщение для d.skuratovich Посмотреть профиль Найти все сообщения от d.skuratovich
 
Регистрация: 19.09.2014
Сообщений: 73

Сообщение от Dimaz Посмотреть сообщение
где же её тогда нужно определить?
До ее вызова
Ответить с цитированием
  #5 (permalink)  
Старый 20.09.2014, 15:30
Профессор
Отправить личное сообщение для Dimaz Посмотреть профиль Найти все сообщения от Dimaz
 
Регистрация: 25.12.2009
Сообщений: 222

Сообщение от d.skuratovich Посмотреть сообщение
До ее вызова
Определяю до "xhr.onreadystatechange". Все равно не работает.
Ответить с цитированием
  #6 (permalink)  
Старый 20.09.2014, 15:39
Аспирант
Отправить личное сообщение для d.skuratovich Посмотреть профиль Найти все сообщения от d.skuratovich
 
Регистрация: 19.09.2014
Сообщений: 73

Плохо пробовал.

Вот так работает:
( function () {
	'use strict';

	var url = 'http://js.ru';
	var xhr = new XMLHttpRequest();
	xhr.open( 'GET', url, true );
	xhr.responseType = 'blob';
	var timeout = setTimeout( function () {
		xhr.abort();
		console.log( 'Сервер не отвечает.' );
	}, 10000 );	
	xhr.onreadystatechange = function () {
		if ( xhr.readyState !== 4 ) {
			return false;
		}
		clearTimeout( timeout );
		if ( xhr.status === 200 ) {
			console.log( 'Все работает!' );
		} else {
			console.log( 'Не работает!' );
		}
	};
	xhr.send();
}() );


И ради бога старайся форматировать код хотя бы пробелам
Ответить с цитированием
  #7 (permalink)  
Старый 20.09.2014, 15:56
Профессор
Отправить личное сообщение для Dimaz Посмотреть профиль Найти все сообщения от Dimaz
 
Регистрация: 25.12.2009
Сообщений: 222

d.skuratovich, Не работает. Все равно выдает: "Сервер не отвечает". И еще. Сервер не возвращает статус 200, так как я качаю файл, он возвращает статус 0.
var xhr = new XMLHttpRequest();
	xhr.open('GET', url, true);
	xhr.responseType = 'blob';
	var timeout = setTimeout(function(){
	   xhr.abort();
	   console.log("Сервер не отвечает.");
	},10000);
	xhr.onreadystatechange = function(){
	   if(xhr.readyState != 4) return;
	   clearTimeout(timeout);
	if(xhr.status != 404){
	//какой-то код
	} else {
	   console.log(xhr.readyState);
	}
	}
	xhr.send();
Ответить с цитированием
  #8 (permalink)  
Старый 20.09.2014, 15:57
Аспирант
Отправить личное сообщение для d.skuratovich Посмотреть профиль Найти все сообщения от d.skuratovich
 
Регистрация: 19.09.2014
Сообщений: 73

Dimaz, ты реально такой или прикидываешься? Конечно сервер не отвечает, адрес же не существует такой. Как с тобой сложно
Ответить с цитированием
  #9 (permalink)  
Старый 20.09.2014, 16:30
Профессор
Отправить личное сообщение для Dimaz Посмотреть профиль Найти все сообщения от Dimaz
 
Регистрация: 25.12.2009
Сообщений: 222

Сообщение от d.skuratovich Посмотреть сообщение
Dimaz, ты реально такой или прикидываешься? Конечно сервер не отвечает, адрес же не существует такой. Как с тобой сложно
Адрес существует! Файл в течение 10 секунд загружается, а потом загрузка прерывается и выдает ошибку.
Ответить с цитированием
  #10 (permalink)  
Старый 20.09.2014, 17:52
Аспирант
Отправить личное сообщение для d.skuratovich Посмотреть профиль Найти все сообщения от d.skuratovich
 
Регистрация: 19.09.2014
Сообщений: 73

Сообщение от Dimaz Посмотреть сообщение
Адрес существует! Файл в течение 10 секунд загружается, а потом загрузка прерывается и выдает ошибку.
Я тебе говорю про свой вариант, он работает. А то как там у тебя это я уже не знаю
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48
Как получить ответ от сервлета. kliver AJAX и COMET 6 06.06.2012 16:08
Как очистить все поля в определенном DIV DarkHacker jQuery 15 21.02.2012 11:39
Как сделать таймер как в САР? jelome Элементы интерфейса 0 27.06.2011 12:40
можно ли, если да то как удалить строки из таблицы Avaria Я не знаю javascript 3 11.06.2009 03:03