Тема: XMLHttpRequest
Показать сообщение отдельно
  #3 (permalink)  
Старый 31.12.2018, 20:20
Аватар для Conus
Аспирант
Отправить личное сообщение для Conus Посмотреть профиль Найти все сообщения от Conus
 
Регистрация: 05.12.2015
Сообщений: 85

я почти разобрался
этот метод делает рекурсивный вызов
и похоже подмену документа освобождая память от своей работы
поэтому переменная в обработчике запроса остаётся не определённой


почему рекурсивный
первый вывод alert(response[0] + ' ' + response[1])
потом вывод в теле вызова xhr()

var xmlhttp
			try  { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } 
			catch (e) { try {  xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) {  xmlhttp = false; } }
			if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp = new XMLHttpRequest();  }


var response = [], lastReadyState;
		response[1] = document
	 function xhr() 
        {   
			var  readyState = xmlhttp.readyState;
			
			if(readyState !== lastReadyState) 
			{
				switch(readyState) 
			    {  case xmlhttp.UNSENT:  xmlhttp.open('POST', '/', true); 
  						  xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); break;

				   case xmlhttp.OPENED:   xmlhttp.send("mod=" + encodeURIComponent('sendo') );  break;

							//case xmlhttp.HEADERS_RECEIVED: break; //no coments
							//case xmlhttp.LOADING:  break; //...

				   case xmlhttp.DONE: response[0] = xmlhttp.response; alert(xmlhttp.response);  return;
				}

				lastReadyState = readyState;
			
			}
        
			 setTimeout(xhr); 
			

} 

 xhr();  
alert(response[0] + ' ' + response[1])

при чем если делать собственный вызов без тайм аута переполняется стек
Maximum call stack size exceeded
и такая же ошибка выскакивает если в функцию предавать параметры
например xhr( response[0])

Последний раз редактировалось Conus, 01.01.2019 в 01:59.
Ответить с цитированием