Показать сообщение отдельно
  #1 (permalink)  
Старый 11.02.2013, 23:55
Аватар для mi.rafaylik
Кандидат Javascript-наук
Отправить личное сообщение для mi.rafaylik Посмотреть профиль Найти все сообщения от mi.rafaylik
 
Регистрация: 07.12.2012
Сообщений: 113

не работает abort() для ajax-запроса
Всем привет ))
Читал мануалы, и пытался сначала разобраться по ним, но увы, баран я баран.
Задача - после отправки ajax-запроса, остановить его (оборвать) по действию пользователя (событие click()), независимо от таймаута самого запроса. Юзаю jQuery, и что-то делаю неправильно, потому что chatExit.abort(); не обрывает запрос :/
Приведу выдержки из кода, которые касаются моего вопроса, опуская пользовательские функции:
$(document).ready(function(){

// функция отправки запроса на наличие новых сообщений
function chatConnect(){
	// даём имя переменной, чтоб потом сделать для неё chatExit.abort()
	var chatExit = $.ajax({
		type: 'POST',
		url: 'process.php',
		data: 'lastmsg='+lastmsg, // передаём данные последнего полученного сообщения
		dataType: 'json',
		cache: false,
		timeout: 180000, // при отсутствии ответа с сервера
		success: function(){
			$('.chat-posts').html('...'); // здесь выводим полученные данные
			// выполняем новый запрос при успешном выполнении
			chatConnect();
		},
		error: function(){
			// выполняем новый запрос по окончанию timeout
			chatConnect();
		}
	});
};

// вызываем функцию при входе в чат
$('.chat-enter').click(function(){
	chatConnect();
});

// обрываем текущий запрос при выходе из чата
$('.chat-exit').click(function(){
	chatExit.abort();
});

});

Есть догадка что abort() не видит переменную chatExit так как она находится внутри другой функции. Может это быть причиной?

Последний раз редактировалось mi.rafaylik, 12.02.2013 в 00:03.
Ответить с цитированием