 
			
				20.12.2013, 14:33
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 20.12.2013 
					
					
					
						Сообщений: 22
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Переход на url после окончания цикла
			 
			
		
		
		
		Подскажите пожалуйста. Имеется следующая проблема. 
 
Есть цикл с получением данных от контакта и отправкой их в базу. Нужно, чтобы четко при окончании цикла и занесении всех данныx в базу срабатывал код перехода на другую страницу. Такой код этого не делает: 
 
function perehod() {  
 
VK.api("wall.get", {filter:"others"}, function(dataFr) { 
var num = dataFr.response[0]; 
 
var chis = num/100; 
for (var c=0; c<chis; c++) { 
var cif = 100*c; 
 
VK.api("wall.get", {count:"100",offset:cif,filter:"others"}, function(data) { 
var profilesCount1 = data.response.length; 
 
// проверяем был ли ответ 
if(data.response) { 
        // отправляем полученные данные пост запросом через ajax jquery: 
         
 for (var i=0; i<profilesCount1; i++) { 
  $.post("vbazy1.php", { id: data.response[i].to_id, to_id: data.response[i].date, from_id: data.response[i].from_id, text: data.response[i].text}, function(data) {    } ); 
}  
} 
    });  
} 
}); 
 
document.location.href = "http://www.site.ru"; 
 
} 
 
 
 
При срабатывании функции сразу происходит переход, но данные в базу не заносятся(или не успевают занестись). Как сделать, чтобы сначала данные занеслись, цикл сработал, а потом произошел переход? 
 
Спасибо. 
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				20.12.2013, 14:45
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 I am Student 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 17.12.2011 
					
					
					
						Сообщений: 4,415
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от vas88811
			
		
	 | 
 
	| 
		function(data) { }
	 | 
 
	
 
 как думаете callback функция придумана для красоты?
 
function(data) { }
пока эта функция не вызовется данные не могут быть занесены, как только вызовутся все callback тогда можно делать переход.  
		
	
		
		
		
		
		
			
				__________________ 
				
	
 
	| 
		
			 Цитата: 
		
	 | 
 
	| 
		Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
	 | 
 
	
 
 
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				20.12.2013, 15:37
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 08.09.2013 
					
					
					
						Сообщений: 9
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		ajax запросы через фреймворк jquey по умолчанию происходят асинхронно.  и если написать что-то типо такого:  
alert(1);
jQuery.post(....,function(responce){ alert(2);});
alert(3);
то в результате вы получите alert(1), alert(3), alert(2). 
Учитывайте это. Впишите "document.location.href = "http://www.site.ru";" во внутрь метода callback вашего ajax. 
Либо используйте Синхронные запросы, но это приостанавливает работу браузера и теряется весь смысл в технологии ajax.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				20.12.2013, 15:44
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 CacheVar 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.08.2010 
					
					
					
						Сообщений: 14,298
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от vas88811
			
		
	 | 
 
	| 
		Нужно, чтобы четко при окончании цикла и занесении всех данныx в базу срабатывал код перехода на другую страницу
	 | 
 
	
 
 Как вариант... 
Делать тот переход в калбек-функции последней итерации цикла.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				20.12.2013, 15:49
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 11.09.2010 
					
					
					
						Сообщений: 8,804
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от ksa
			
		
	 | 
 
	| 
		Делать тот переход в калбек-функции последней итерации цикла.
	 | 
 
	
 
 А кто даст гарантию что  последний запрос завершится в  последнюю очередь?
 
Есть такая штука как $.when, никогда не пользовался, думаю она тут в самый раз:
 
var deferreds = [];
for (var i=0; i<profilesCount1; i++) {
    deferreds[i] = $.post("vbazy1.php", {
        id: data.response[i].to_id,
        to_id: data.response[i].date,
        from_id: data.response[i].from_id,
        text: data.response[i].text
    });
}
$.when.apply($, deferreds).done(function() {
    location.href = "http://www.site.ru";
});
http://api.jquery.com/jQuery.when/ 
		
	
		
		
		
		
		
			
				__________________ 
				В личку только с интересными предложениями   
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				20.12.2013, 15:58
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 08.09.2013 
					
					
					
						Сообщений: 9
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		код на скорую руку могут быть ошибки 
Замените эту часть 
for (var i=0; i<profilesCount1; i++) {
$.post("vbazy1.php", { id: data.response[i].to_id, to_id: data.response[i].date, from_id: data.response[i].from_id, text: data.response[i].text}, function(data) { 	} );
}
на что-то подобное 
 
function run(data,next,profilesCount1)
{
$.post("vbazy1.php", { id: data.data.response[next].to_id, to_id: data.response[next].date, from_id: data.response[next].from_id, text: data.response[next].text}, function(data) { if( next+1 < profilesCount1 ) run(data,next++,profilesCount1); else document.location.href = "http://www.site.ru";	} );
}
run(data, 0, profilesCount1);
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				20.12.2013, 16:02
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 11.09.2010 
					
					
					
						Сообщений: 8,804
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 ANDRUkomod, стоило отметить, что в твоем варианте запросы идут последовательно, а не параллельно, так что это замедляет работу скрипта. 
		
	
		
		
		
		
		
			
				__________________ 
				В личку только с интересными предложениями   
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				20.12.2013, 16:03
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 08.09.2013 
					
					
					
						Сообщений: 9
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Согласен, но в условии этого не было, а выполнено будет как задумывал автор. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				20.12.2013, 16:29
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 CacheVar 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.08.2010 
					
					
					
						Сообщений: 14,298
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от danik.js
			
		
	 | 
 
	| 
		А кто даст гарантию что последний запрос завершится в последнюю очередь?
	 | 
 
	
 
 Никто.    
В этом случае и цикл нужно не так организовывать... Либо полученые ответы считать...  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				20.12.2013, 16:42
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 11.09.2010 
					
					
					
						Сообщений: 8,804
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от ksa
			
		
	 | 
 
	| 
		Либо полученые ответы считать...
	 | 
 
	
 
 Мой вариант смотрел? Ждем пока автор проверит его..  
		
	
		
		
		
		
		
			
				__________________ 
				В личку только с интересными предложениями   
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 
 
 
 
	 | 
 
 
 |