Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ajax abort, Не ждать ответа на отмененный запрос? 
:(
    Опции темы
Su_
  Дата 13.2.2012, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 1.8.2007

Репутация: нет
Всего: нет



Всем привет!
Вопрос в том как прервать ajax запрос при помощи библиотеки jquery.
Ситуасия следующая: 
я посылаю запрос на сервер:
Код

curren_ajax= $.ajax({
...
  error:function(data){
alert("aborted");
}

Он выполняется 15 секнуд, в этот период я посылаю второй запрос, перед этим сделав:
Код


 if(curren_ajax.readyState ==1)
                                {
alert("drop");
                                  curren_ajax.abort();  
}

Срабатывает error: и выводиться alert("aborted");

В консоли chrome видно что 1 запрос был отменен, и сейчас выполняется 2 . Но по факту пока не выполниться 1 запрос (даже отмененный) , не начнется выполняться второй . В чем я ошибаюсь?


Это сообщение отредактировал(а) Su_ - 13.2.2012, 20:23


--------------------
user posted image

PM MAIL WWW   Вверх
Su_
Дата 13.2.2012, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 1.8.2007

Репутация: нет
Всего: нет



по логике , первый запрос вызывает загрузку файла xml , соответвенно занимает канал.Может нужно на сервер послать еще запрос с отменой загрузки?


--------------------
user posted image

PM MAIL WWW   Вверх
ksnk
Дата 13.2.2012, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 38
Всего: 386



По идее, если не установлен флаг ignore_user_abort(), то abort обязан прерывать текущую операцию на сервере. Правда, если в это время выполняется длинный MySl запрос, то прервется выполнение только после его выполнения. Если файл выдается чем-то вроде readfile, то тоже никакой остановки выполнения не получится...
Цитата(Su_ @  13.2.2012,  21:20 Найти цитируемый пост)
по логике , первый запрос вызывает загрузку файла xml , соответвенно занимает канал.Может нужно на сервер послать еще запрос с отменой загрузки? 

Если запрос выполняется "управляемо", не с помощью readfile, а мелкими порциями, выдаваемыми echo, то можно ajax'ом послать на сервер флажок, по которому прекратить передачу файла. 
Не имея кода и настроек сервера можно долго гадать о причинах...



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Su_
Дата 13.2.2012, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 1.8.2007

Репутация: нет
Всего: нет



Спасибо за ответ.
Цитата

Если запрос выполняется "управляемо", не с помощью readfile, а мелкими порциями, выдаваемыми echo, то можно ajax'ом послать на сервер флажок, по которому прекратить передачу файла. 

Ну меня дольше всего работает simplexml_load_file и как я понял его прервать никак нельзя. Как я почитал можно все то же самое реализовать через curl и у него уже вызвать через флаг метод close()/ 
Цитата

Не имея кода и настроек сервера можно долго гадать о причинах...

Код минимальный, на клиенте вызов php метода с одной строчкой  simplexml_load_file. Сервер apache  дефолтовых настроек.

тут интересен сам механизм работы с долгими ajax запросами. Может логичнее не обрывать запрос а понизить его приоритет в канале , и по завершению вывести фоном.Возможно ли это)


--------------------
user posted image

PM MAIL WWW   Вверх
ksnk
Дата 14.2.2012, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 38
Всего: 386



Su_, Немного подозрительно звучит то, что 
Цитата

 Но по факту пока не выполниться 1 запрос (даже отмененный) , не начнется выполняться второй


Картинка напоминает блокировку скрипта сессиями. Можно перед вызовом simplexml_load_file вызвать session_write_close()/ По идее, даже если скрипт не прекратил выполняться, никто не мешает еще раз обратиться к серверу.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Применение библиотек | Следующая тема »


 




[ Время генерации скрипта: 0.1202 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.