Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   xmlhttprequest синхронный запрос в цикле (https://javascript.ru/forum/misc/69825-xmlhttprequest-sinkhronnyjj-zapros-v-cikle.html)

djkey 20.07.2017 13:13

xmlhttprequest синхронный запрос в цикле
 
Цель последовательно создать процедуры на sql сервере.
Делаю это следующим кодом:
function step4(){
	var lerror = 0;
	var classif = document.getElementById('classif').options[document.getElementById('classif').selectedIndex].value;
	var name_remote_DB = document.getElementById("name_remote_DB").value;
	var dblocalname = document.getElementById("dblocalname").value;	
	var elem = document.getElementById("listprocedure");
	var globalshifts = document.getElementById("loadperiod").getAttribute('dataload');
	var N = elem.getAttribute('Ntable');
		for (var i=1; i<=N; i++){
			
			var url = "CREATEPROCEDURE.php?procedure="+elem.rows[i].cells[1].innerHTML + "&dblocalname="+ dblocalname  + "&name_remote_DB="+name_remote_DB + '&classif='+ classif + '&globalshifts=' + globalshifts;
			console.log(url);
			var CREATEPROCEDURE =  new XMLHttpRequest();
			CREATEPROCEDURE.open('GET', url, false);
				CREATEPROCEDURE.onreadystatechange = function() {
					if (CREATEPROCEDURE.readyState == 4) {
						if(CREATEPROCEDURE.status == 200) {
							console.log(CREATEPROCEDURE.responseText);
							if(CREATEPROCEDURE.responseText != 1){
								document.getElementById("lasterror").innerHTML = document.getElementById("lasterror").innerHTML +'<br>'+CREATEPROCEDURE.responseText;
								lerror = 1;
							}
							else{
								/* в случае успеха скрываем крестик, показываем галочку */
								elem.rows[i].cells[2].childNodes[1].removeAttribute("style");
								elem.rows[i].cells[2].childNodes[3].style.display='none';
							}
						}
					}
				}
			CREATEPROCEDURE.send(null);
/* если произошла ошибка при создании выходим */	
			if(lerror == 1){ 
				return;
			}
		}			
}


Но визуальное изменение страницы происходит только когда будет завершён весь цикл. Как сделать что бы изменение страницы визуально происходило на каждом шаге?

рони 20.07.2017 13:25

Цитата:

Сообщение от djkey
Как сделать что бы изменение страницы визуально происходило на каждом шаге?

выкинуть for

djkey 20.07.2017 13:33

поясните,пожалуйста. Создать вместо этого while? Или что? Как это поможет?

рони 20.07.2017 13:36

djkey,
https://javascript.ru/forum/ajax/697...tml#post458568


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