Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   ПРинудительная остановка Ajax запроса (https://javascript.ru/forum/jquery/24207-prinuditelnaya-ostanovka-ajax-zaprosa.html)

Nekromancer 22.12.2011 19:48

devote,
Я помню когда Одноклассники юзали GWT и синхронные запросы. Я долго смеялся.

devote 22.12.2011 19:54

Цитата:

Сообщение от Nekromancer
devote,
Я помню когда Одноклассники юзали GWT и синхронные запросы. Я долго смеялся.

везде хватает дураков... вот например вконтакте там вообще утечка памяти у них, дык по сей день никто не исправил. Это проявляется когда откроешь страницу и пару суток не закрываешь ее. А при обращении к странице браузер виснет либо вылетает. Но им же пофиг. Главное что работает, пусть и криво но работает. Поэтому я вконтактом не пользуюсь с тех пор как проявилась эта проблема, так как у меня компьютер никогда не выключается, и тем самым браузер открыт всегда. А эти повисания мне не очень приятны.

qwerty13 17.03.2012 16:17

Пытаюсь прервать ajax запрос abort'ом, и, передача данных останавливается, но аякс все равно ждёт ответ от сервера.
Как сделать, чтобы он не ждал ответа от сервера?

Nekromancer 17.03.2012 16:29

qwerty13,
Это как? Не закрывается соединение? Как вы это видите? Какой браузер? Почему ваш сервер не реагирует на закрытие соединения?

qwerty13 17.03.2012 17:21

Цитата:

Сообщение от Nekromancer (Сообщение 163658)
qwerty13,
Это как? Не закрывается соединение? Как вы это видите? Какой браузер? Почему ваш сервер не реагирует на закрытие соединения?

Ну вот например:
js:
var id = false;
function ajax(q){
	if ( id ) id.abort();
	id = $.post(url,{to:q},function(d){alert(d);});
}
$('#button').live('click',function(){ ajax('qwe'); return false;})

php:
<?php
sleep(5);
exit('ok');
?>

Если нажать на кнопку то аякс отправит запрос...
Если ещё раз нажать на кнопку, то запрос (вроде бы как) прерывается и аякс создаёт новый запрос, но время ожидания уже около 10 сек. Если ещё раз нажать, то ждать будет около 15 сек и т.д.
Это хорошо видно в мозилле с помощью Firrebug'а, (+такое же в опере, в остальных браузерах не знаю).
А сервер у меня Denwer.

Nekromancer 17.03.2012 23:48

qwerty13,
Тут проблема серверного кода. Не знаю как php работает, но предполагаю, что когда соединение прекращается, а скрипт всё ещё спит, он не выводится из сна. То есть он в любом случае ждёт эти пять секунд. А так как на Апаче запросы становятся в очередь, то с каждым новым запросом ждёте время предищуего исполнения скрипта, плюс нового. Как то так.

qwerty13 18.03.2012 00:17

Nekromancer,
Значит если скрипт будет выводить результат за (например) 0.03 сек., то в независимости от скорости интернета у пользователя и объёма возвращаемых скриптом дынных, следующий запрос аякса будет проходить нормально (без задержек)!?

Nekromancer 18.03.2012 00:25

qwerty13,
Ну задержкой как раз будет скорость интернета и объем передаваемых данных по нему. Так же скорость отрисовки на его компьютере.


Часовой пояс GMT +3, время: 06:30.