mi.rafaylik
11.02.2013, 23:55
Всем привет ))
Читал мануалы, и пытался сначала разобраться по ним, но увы, баран я баран.
Задача - после отправки 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 так как она находится внутри другой функции. Может это быть причиной?
Читал мануалы, и пытался сначала разобраться по ним, но увы, баран я баран.
Задача - после отправки 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 так как она находится внутри другой функции. Может это быть причиной?