Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.06.2015, 13:56
Интересующийся
Отправить личное сообщение для bear9 Посмотреть профиль Найти все сообщения от bear9
 
Регистрация: 23.09.2011
Сообщений: 24

ajax и цикл - данные не успевают отображаться в браузере
Добрый день.
Не могу найти решение следующей проблемы.
Есть цикл, в цикле ajax запрос, после выполнения запроса необходимо счетчик увеличить на 1 и поместить значение счетчика в элемент страницы. Так вот, размещение происходит только после цикла, а все промежуточные значения не размещаются. Пример:
var test_count=document.getElementById('counter');
for (var i=0; i<3; i++) {
	$.ajax({
		type: "POST",
		url : "test.php",
		async: false, 
		success: function (result_query) {	
			test_count.innerHTML = (i);}
		});
}

в результате выполнения в test_count будет 2, а все промежуточные значения отображаться не будут. Пробовал делать паузу - не помогает. Однако добавление alert - показывает, что значения помещаются и все ок. Т.е. вот такой код, работает корректно:
var test_count=document.getElementById('counter');
for (var i=0; i<3; i++) {
	$.ajax({
		type: "POST",
		url : "test.php",
		async: false, 
		success: function (result_query) {	
			test_count.innerHTML = (i);
			alert('ok'); }
		});
}

Но alert не устраивает. Подскажите решение. Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 21.06.2015, 15:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,149

Сообщение от KosBeg
test_count.innerHTML += (result_query);
но в любом случае порядок поступления информации будет случайным.
Ответить с цитированием
  #3 (permalink)  
Старый 21.06.2015, 16:15
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,149

bear9,
test_count.innerHTML += (++i);
так?
Ответить с цитированием
  #4 (permalink)  
Старый 21.06.2015, 16:24
Интересующийся
Отправить личное сообщение для bear9 Посмотреть профиль Найти все сообщения от bear9
 
Регистрация: 23.09.2011
Сообщений: 24

Сообщение от рони Посмотреть сообщение
bear9,
test_count.innerHTML += (++i);
так?
поместит в test_count только после окончания цикла, хоть все промежуточные значения и будут...
Ответить с цитированием
  #5 (permalink)  
Старый 21.06.2015, 16:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,149

bear9,
непонятно что вы хотите
Ответить с цитированием
  #6 (permalink)  
Старый 21.06.2015, 16:41
Интересующийся
Отправить личное сообщение для bear9 Посмотреть профиль Найти все сообщения от bear9
 
Регистрация: 23.09.2011
Сообщений: 24

если простыми словами - счетчик ajaх запросов. Или индикатор выполнения. Я знаю, количество запросов - к примеру 3, и хочу сообщить пользователю, что выполнен 1 запрос из 3-х, 2 из 3-х, 3 из 3-х. А для этого нужно выводить соответствующую информацию не после выполнения всех трех запросов, а после каждого.
Ответить с цитированием
  #7 (permalink)  
Старый 21.06.2015, 16:46
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,149

bear9,
var test_count=document.getElementById('counter'), var num = 0;
for (var i=0; i<3; i++) {
	$.ajax({
		type: "POST",
		url : "test.php",
		async: false,
		success: function (result_query) {
			test_count.innerHTML = ++num +" из "+ i;
		    }
		});
}
Ответить с цитированием
  #8 (permalink)  
Старый 21.06.2015, 16:52
Интересующийся
Отправить личное сообщение для bear9 Посмотреть профиль Найти все сообщения от bear9
 
Регистрация: 23.09.2011
Сообщений: 24

ВЫ получите в браузере "2 из 2".
"0 из 2", и "1 из 2" - в браузере не будут показаны, даже если запросы будут занимать продолжительное время.
Ответить с цитированием
  #9 (permalink)  
Старый 21.06.2015, 17:10
Интересующийся
Отправить личное сообщение для bear9 Посмотреть профиль Найти все сообщения от bear9
 
Регистрация: 23.09.2011
Сообщений: 24

Проверка в разных браузерах показала, что Mozilla работает корректно, а Opera и Chrome - нет.
Ответить с цитированием
  #10 (permalink)  
Старый 21.06.2015, 17:13
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,149

bear9,
ок я пас, более ничем помочь не могу, так как не понимаю что вы хотите.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Цикл Ajax запроса при click Infinity178 jQuery 1 27.03.2015 09:41
Передать данные через Ajax zahod5277 AJAX и COMET 1 20.01.2015 22:31
Книги по Ajax BaVa Учебные материалы 18 18.08.2013 14:05
Получить данные ajax запросом mue Общие вопросы Javascript 2 17.12.2012 12:49
ajax $.post вместо json проблема данные не приходят Sadist_dead AJAX и COMET 2 12.07.2012 17:59