Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Применение библиотек > Как прервать ajax запрос?


Автор: imm 7.2.2009, 10:41
Работаю на jQuery.

Есть объект окно которое по закрытию удаляет сове содержимое, а по открытию грузит его по ajax.

Ситуация такая:

Открываем окно отправляется ajax запрос, не дожидаясь ответа окно закрываем и открываем снова (только грузя другую страницу).
И теперь два success будут бороться за содержимое окна.

Вопрос:

Как прервать ajax запрос?

Автор: solenko 7.2.2009, 11:24
А зачем его прерывать? Создавайте окно с уникальным идентификатором и работайте с ним. Нет окна == обработчик ничего не делает.

Автор: ksnk 7.2.2009, 11:30
imm, Что такое окно? Если отдельное окно броузера, то вопрос непонятен совершенно smile

Добавлено через 13 минут и 55 секунд
В принципе, у обычного xmlHttpRequest'а есть метод abort. Однако, для jQuery добраться до этого объекта непросто. Можно поставить callback с помощью ajaxSend. Одним из параметров этого запроса будет тот самый объект. Нужно сохранить объект и кильнуть его в нужный момент. Правда как отреагирует jQuery'вский ajax на такое обращение - не могу пока себе представить...  smile 

Автор: Kyrt_God 7.2.2009, 20:32
зачем вообще такие танцы с окном.И вообще попапы это зло и некрасиво - юзайте модальные окна.

Автор: IDVsbruck 9.2.2009, 04:07
Что-то я тоже не понял вопроса. Если окно закрыто, то объект XmlHttpRequest удален. Кто и как может вызвать success удаленного объекта?

Автор: imm 9.2.2009, 13:29
Извиняюсь, выходные были.

Цитата(ksnk @  7.2.2009,  11:30 Найти цитируемый пост)
imm, Что такое окно? Если отдельное окно броузера, то вопрос непонятен совершенно


Окно в моем - это <div> с навешанным на него draggable. И в этот див грузится все что мне нужно.


Цитата(solenko @  7.2.2009,  11:24 Найти цитируемый пост)
А зачем его прерывать? Создавайте окно с уникальным идентификатором и работайте с ним. Нет окна == обработчик ничего не делает. 


То да, но сейчас мне нужны только модальные окна и объект окна у меня один на всех, потому и стал такой вопрос. Но раз простым и незамудренным способом прервать запрос низя, то пусть он и не прерывается, сроки уже поджимают потому придумаю какую-нибудь страшную фразу и страшилку на тему не закрывайте окна пока оно не загрузится ибо mustdie и все будет ок.  smile  smile  smile 



Автор: maroccanez 14.2.2009, 19:41
А что разве нет информации в нете, по учебникам должно быть.

Автор: bars80080 14.2.2009, 23:21
а что значит прервать запрос? сам запрос ушёл в сеть, всё, на этом точка. обработчик сидит и ждёт когда придёт ответ, чтобы совершить некое действие. вот вызов этого действия и можно остановить. достаточно ввести переменную, а на вызов добавить проверку этой переменной: (perem == false, если мы не хотим выполнения)

Код

req.onreadystatechange = function() { 
        if(req.readyState == 4 && perem) ajax_o(req.responseText); }

Автор: ksnk 15.2.2009, 00:17
bars80080, 
Цитата

 обработчик сидит и ждёт когда придёт ответ...

и сервер сидит и лихорадочно сочиняет этот самый ответ. Вот это как раз и можно остановить операцией abort, о которой я писал выше...

Автор: bars80080 15.2.2009, 13:08
Цитата(ksnk @  14.2.2009,  23:17 Найти цитируемый пост)
Вот это как раз и можно остановить операцией abort, о которой я писал выше... 

а что, это остановит сервер?

Автор: ksnk 15.2.2009, 13:37
bars80080, Дык, кто-то же придумал параметр ignore_user_abort в настройках php.ini, значит это кому-то нужно ;-)

Автор: bars80080 16.2.2009, 00:04
Цитата(ksnk @  15.2.2009,  12:37 Найти цитируемый пост)
кто-то же придумал параметр ignore_user_abort в настройках php.ini, значит это кому-то нужно 

даааа? всю жизнь считал, что сервер не видит никакой связи между двумя запросами
чем же он отслеживает? куками что ли?

Автор: ksnk 16.2.2009, 00:39
bars80080, Ну, запрос-же один. открывается соединение, пока оно стоит - считается,что на той стороне его кто-то ждет. Cделали abort - TCP соединение прервалось - серверу можно пойти покурить smile

Автор: bars80080 16.2.2009, 14:55
мммм, вот он значит какой аякс. а я ничего и не подозревал...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)