Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.02.2012, 15:52
Аспирант
Отправить личное сообщение для mcavalon Посмотреть профиль Найти все сообщения от mcavalon
 
Регистрация: 04.11.2011
Сообщений: 65

замыкание в пост запросе
Добрый день!
есть код следущего вида
for (var i = 0; i < count_day; i++) {
	if ($(".ui-datepicker-calendar td")[i] != undefined) {
		if ($(".ui-datepicker-calendar td")[i].className == " calendar_event") {
			if (parseInt($(".ui-datepicker-calendar td")[i].getElementsByTagName('a')[0].innerHTML) < 10) {
				var dd = "0"+$(".ui-datepicker-calendar td")[i].getElementsByTagName('a')[0].innerHTML.toString();
			} else {
				var dd = $(".ui-datepicker-calendar td")[i].getElementsByTagName('a')[0].innerHTML;
			}
			$.post("/ch/check_events.php", {d: '2012-' + mon_num + '-' + dd + ' 00:00:00'}, function(s){
				if (s == 1) {$(".ui-datepicker-calendar td")[i].className = "calendar_event";}
				else {$(".ui-datepicker-calendar td")[i].className = "";}
			console.log(i);
			});
		}
	}
}

у меня постоянно пост запрос возвращает последнее значение. спросил у коллеги, сказал надо делать замыкание, но КАК не сказал?
может Вы подскажите как мне сделать замыкание? или как решить данную проблему
Ответить с цитированием
  #2 (permalink)  
Старый 21.02.2012, 16:31
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

1 посоветовать коллеге прочитать хоть одну умную книжку , поскольку количество одновременных запросов индивидуально для каждого браузера и ограничивается небольшим количеством .
2 отправлять след запрос когда пришел ответ на пред.запрос.-но это никак не замыкание а обработка колбека
3 а ответ у вас не кешируется случайно?
Ответить с цитированием
  #3 (permalink)  
Старый 21.02.2012, 16:33
Аспирант
Отправить личное сообщение для mcavalon Посмотреть профиль Найти все сообщения от mcavalon
 
Регистрация: 04.11.2011
Сообщений: 65

я в каждом запросе вывожу console.log(response);
и все они одинаковые
Ответить с цитированием
  #4 (permalink)  
Старый 21.02.2012, 16:45
Аватар для Snipe
Профессор
Отправить личное сообщение для Snipe Посмотреть профиль Найти все сообщения от Snipe
 
Регистрация: 06.05.2008
Сообщений: 765

http://javascript.ru/basic/closure - Замыкания
А вам нельзя в одном запросе все данные передать?

У parseInt есть второй аргумент:
Не о том

Последний раз редактировалось Snipe, 21.02.2012 в 16:49.
Ответить с цитированием
  #5 (permalink)  
Старый 21.02.2012, 17:01
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от mcavalon
я в каждом запросе вывожу console.log(response);
и все они одинаковые
чего?случайно это не оно?
Сообщение от mcavalon
12 console.log(i);
ну и чему i всегда будет равно в колбеке? js-язык однопоточный

Последний раз редактировалось dmitriymar, 21.02.2012 в 17:08.
Ответить с цитированием
  #6 (permalink)  
Старый 21.02.2012, 18:09
Аватар для Snipe
Профессор
Отправить личное сообщение для Snipe Посмотреть профиль Найти все сообщения от Snipe
 
Регистрация: 06.05.2008
Сообщений: 765

Сообщение от dmitriymar Посмотреть сообщение
чего?случайно это не оно?
ну и чему i всегда будет равно в колбеке? js-язык однопоточный
Ну так это ж классика замыкания. При чем тут поточность?
Ответить с цитированием
  #7 (permalink)  
Старый 21.02.2012, 18:11
Аспирант
Отправить личное сообщение для mcavalon Посмотреть профиль Найти все сообщения от mcavalon
 
Регистрация: 04.11.2011
Сообщений: 65

Сообщение от dmitriymar
Сообщение от mcavalon
12 console.log(i);
ну и чему i всегда будет равно в колбеке? js-язык однопоточный
я на месте не стою, а делаю, поэтому код может отличаться
Ответить с цитированием
  #8 (permalink)  
Старый 21.02.2012, 18:15
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Snipe,
смотри он жалится что i у него всегда одно -последнее.
При этом не задумывается что язык однопоточный , т.е в цикле шлёт запросы, но ответы он обработает только тогда,когда у него цикл полностью отработает( -будут отправлены все запросы ,причём некоторые из них будут сброшены изза превышения количества одновременных запросов) начнут отрабатывать колбеки . чему будет равно I при любом колбеке?
for (var i = 0; i < 10; i++) {}
alert(i)

я бы не сказал что это классика замыкания-замыкание вызов функции из самой себя,а в этом случае вызов из колбека когда уже и функция отработала-это вызов по цепочке.

Последний раз редактировалось dmitriymar, 21.02.2012 в 18:20.
Ответить с цитированием
  #9 (permalink)  
Старый 21.02.2012, 18:19
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

Сообщение от dmitriymar
замыкание вызов функции из самой себя
Это рекурсия.

А в данном случае реально замыкание. Функции смотрят в родительскую область видимости и на момент прихода ответа от сервера видят последнее значение цикла, так как он уже отработал.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #10 (permalink)  
Старый 21.02.2012, 18:25
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от Nekromancer
Функции смотрят в родительскую область видимости и на момент прихода ответа от...
Да почему? причём колбек к замыканию? это ведь не вложенная функция,это функция какая выполниться когда будут выполнены опр условия. какая у неё родительская область видимости кроме глобальной?
причём она будет вызвана не из функции -ajax не часть javascript

Последний раз редактировалось dmitriymar, 21.02.2012 в 18:37.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
передача в пост checkbox[on/off] в jquery dimiork Элементы интерфейса 5 15.12.2010 22:05
вопр. замыкание Shaci jQuery 6 05.03.2010 12:21
FireFox не дергает onreadystatechange при синхронном запросе? Василий Б. AJAX и COMET 0 01.03.2010 16:18
Как в ajax запросе передать файл методом POST mcpro jQuery 1 16.12.2009 11:41
Как правильно послать XML в POST запросе LowCoder AJAX и COMET 10 15.07.2009 23:20