Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.05.2013, 00:01
Интересующийся
Отправить личное сообщение для amt779 Посмотреть профиль Найти все сообщения от amt779
 
Регистрация: 01.07.2011
Сообщений: 10

подвисание при $.ajax() в цикле
Здравствуйте.

Есть веб-приложение на twitter.bootstrap + jQuery, которое посылает в цикле ~ 150 ajax запросов. После, приложение обрабатывает полученные данные.
Вот метод, который используется для ajax-запросов:

getAjaRemotely : function(ajaxData){
	result = [];
	$.ajax({
		type: "GET",
		async:false,
		data: ajaxData,
		url: "proxy.php",
		success: function(msg){
			result = $.parseJSON(msg);
		}
		,failute: function(msg){
			log.error('Сбой при загрузе данных с сервера. Пожлауйста, проверьте Ваше соядинение с Интернет и повторите попытку.');
			result = [];
		}
	});
	return result;
}

Проблема, приложение как бы зависает на период времени, пока выполняются ajax-запросы. Т.е., пока все 150 ajax-запросов не будут отправлены, нет возможности работать ни с одним gui-элементом страницы. Даже скроллбар не работает. Элементы интерфейса сайта никак не реагируют на попытку взаимодействовать с ними во время выполнениия 150 ajax-запросов в цикле.

Что вызывает это подвисание интерфейса? Как с этим бороться? Как добиться того, чтобы пользователь мог работать с другими эелементами интерфейса, в период, пока подгружаются данные по ajax?
Ответить с цитированием
  #2 (permalink)  
Старый 15.05.2013, 09:31
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

Вы бы хотя бы документацию прочитали и вообще про ajax.
Код:
async:true
__________________
.
Ответить с цитированием
  #3 (permalink)  
Старый 15.05.2013, 09:54
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от amt779
пока все 150 ajax-запросов не будут отправлены
Ты че, DDOS атаку устраиваешь чтоли? Твой сервер то вывезет 150 одновременных запросов?
Ответить с цитированием
  #4 (permalink)  
Старый 15.05.2013, 11:11
Интересующийся
Отправить личное сообщение для amt779 Посмотреть профиль Найти все сообщения от amt779
 
Регистрация: 01.07.2011
Сообщений: 10

Skipp,
Если в функции getAjaRemotely() я меняю значение на
async:true

То, при выполнеии функции,
jsonData = controler.getAjaRemotely( data )

jsonData - всегда пустое. Данные как бы приходят, но я не понимаю как их программно снять. Подскажите, как это сделать.
Ответить с цитированием
  #5 (permalink)  
Старый 15.05.2013, 11:46
Интересующийся
Отправить личное сообщение для amt779 Посмотреть профиль Найти все сообщения от amt779
 
Регистрация: 01.07.2011
Сообщений: 10

Сообщение от danik.js Посмотреть сообщение
Ты че, DDOS атаку устраиваешь чтоли? Твой сервер то вывезет 150 одновременных запросов?
Не устраиваю. Вывезет. Запросы не одновременные, а поочередные.
Ответить с цитированием
  #6 (permalink)  
Старый 15.05.2013, 11:54
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

Почитайте, что такое асинхронный запрос.

success - выполняется когда приходит ответ от сервера, но браузер не ждёт и возвращает result и он у вас пустой, а потом уже срабатывает succes, но уже поздно.
__________________
.
Ответить с цитированием
  #7 (permalink)  
Старый 15.05.2013, 11:55
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

Сообщение от amt779
Запросы не одновременные, а поочередные.
Они одновременные, они асинхронны, почитайте про ajax и всё поймёте.
__________________
.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кратное увеличение при клике на кнопку vabus Элементы интерфейса 2 15.04.2013 20:42
Совершение действия при удерживании клавиши BorodinKO Общие вопросы Javascript 3 26.06.2011 00:59
При достижении низа страницы prokopoffmusic jQuery 0 21.06.2011 04:52
установить переменную сессии через ajax при загрузке страницы optik77 AJAX и COMET 3 02.06.2011 17:36
Не отрабатывает событие onmouseout при внедрении нового слоя ilshat Элементы интерфейса 3 28.07.2008 06:27