Показать сообщение отдельно
  #1 (permalink)  
Старый 13.05.2012, 14:27
Новичок на форуме
Отправить личное сообщение для false Посмотреть профиль Найти все сообщения от false
 
Регистрация: 09.12.2011
Сообщений: 5

XMLHTTPRequest дождаться выполнения всех асинхронных запросов
Второй день бьюсь над проблемой:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>example</title>
 
<script type="text/javascript">
//Попытка синхронного вып. асинхронн. запр
function getXmlHttp(){
	try {
		return new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
			return new ActiveXObject("Microsoft.XMLHTTP");
		} catch (ee) {
		}
	}
	if (typeof XMLHttpRequest!='undefined') {
		return new XMLHttpRequest();
	}
}

//выполнение списка url одновременно
function XmlHttpMulti(urls) {
var result=new Array(); //сюда будет записан результат
var c=parseInt(urls.length);
for(var i=0; i<urls.length; i++) {result[i]=undefined; get(urls[i], i);}

function get(url, n) {
var xmlhttp = getXmlHttp();
xmlhttp.open('GET', url, true);
xmlhttp.onreadystatechange = function() {
 if ( (xmlhttp.readyState==4) && (xmlhttp.status==200) ) {c--; result[n]=xmlhttp.responseText;}
}
xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
xmlhttp.send(null);}


//тут будет что-то тормаозящее скрипт пока не прогрузятся все url
while(c!=0) {alert('это как-бы пауза');}//почему если убрать alert() повисает страница?

return result;
}
 

var r=XmlHttpMulti(['http://webiteam.ru/test/multicurl/test.php?data=This+is+get+first','http://webiteam.ru/test/multicurl/test.php?data=This+is+get+second','http://webiteam.ru/test/multicurl/test.php?data=This+is+get+third']) ;

function test(i) {
document.getElementById('text').innerHTML = r[i];}

</script>
</head>
 
<body>
<a href="#" onClick="test(0)" >Show URL #1</a> <a href="#" onClick="test(1)" >Show URL #2</a> <a href="#" onClick="test(2)" >Show URL #3</a>
<div id="text">I am a Text</div>

</body>
</html>


Собственно проблема в этом:
//тут будет что-то тормаозящее скрипт пока не прогрузятся все url
while(c!=0) {alert('это как-бы пауза');}//почему если убрать alert() повисает страница?

Что я делаю не так?
Ответить с цитированием