Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   подвисание при $.ajax() в цикле (https://javascript.ru/forum/jquery/37944-podvisanie-pri-%24-ajax-v-cikle.html)

amt779 15.05.2013 00:01

подвисание при $.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?

Skipp 15.05.2013 09:31

Вы бы хотя бы документацию прочитали и вообще про ajax.
Код:

async:true

danik.js 15.05.2013 09:54

Цитата:

Сообщение от amt779
пока все 150 ajax-запросов не будут отправлены

Ты че, DDOS атаку устраиваешь чтоли? Твой сервер то вывезет 150 одновременных запросов?

amt779 15.05.2013 11:11

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

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

jsonData - всегда пустое. Данные как бы приходят, но я не понимаю как их программно снять. Подскажите, как это сделать.

amt779 15.05.2013 11:46

Цитата:

Сообщение от danik.js (Сообщение 250585)
Ты че, DDOS атаку устраиваешь чтоли? Твой сервер то вывезет 150 одновременных запросов?

Не устраиваю. Вывезет. Запросы не одновременные, а поочередные.

Skipp 15.05.2013 11:54

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

success - выполняется когда приходит ответ от сервера, но браузер не ждёт и возвращает result и он у вас пустой, а потом уже срабатывает succes, но уже поздно.

Skipp 15.05.2013 11:55

Цитата:

Сообщение от amt779
Запросы не одновременные, а поочередные.

Они одновременные, они асинхронны, почитайте про ajax и всё поймёте.


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