Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите понять логику программы (https://javascript.ru/forum/misc/32580-pomogite-ponyat-logiku-programmy.html)

newprogramm 22.10.2012 10:12

Помогите понять логику программы
 
Добрый день!

Списал программу разобрался все работает...и тут понял что вовсе и не все..не понял один нюанс
строчка
reg.onreadystatechange = onReadyState;

ее можно вставить в 2 места (20 и 24 строчка)и все будет работать...у мя вопрос если вставить в место один то выполнятся onReadyState в этой ф-и есть проверка
if(ready == READY_STATE_COMPLETE)
					{
						data = reg.responseText;						
					}

и вот вопрос как можно получить ответ с сервера если методы
reg.open(HttpMethod,url,true);
reg.setRequestHeader('Content-Type','aplication/x-www-form-urlencoded');
reg.send(params);


указаны после reg.onreadystatechange = onReadyState, ведь зацикливания нет и все должно выполняться последовательно...
var reg = null;
			var console = null;
			
			var READY_STATE_UNINITIALIZED = 0;
			var READY_STATE_LOADING = 1;
			var READY_STATE_LOADED = 2;
			var READY_STATE_INTERATIVE = 3;
			var READY_STATE_COMPLETE = 4;
			
				function sendRequest(url,params,HttpMethod)
				{
					if(!HttpMethod)
					{
						HttpMethod = 'GET';
					}
					reg = initXMLHTTPRequest();
					
					if(reg)
					{
					// место 1
						reg.open(HttpMethod,url,true);
			    		reg.setRequestHeader('Content-Type','aplication/x-www-form-urlencoded');
						reg.send(params);
						reg.onreadystatechange = onReadyState;// место 2	
	}
					else
					{
						alert("регистрация не прошла");
					}
				}
				
				function initXMLHTTPRequest()
				{
					var xRequest = null;
					if(window.XMLHttpRequest)
					{
						xRequest = new XMLHttpRequest();
					} else if(window.ActiveXObject)
					{
						xRequest = new ActiveXObject("Microsoft.XMLHTTP");
					}
					return xRequest;
				}
				
				function onReadyState()
				{
					var ready = reg.readyState;
					var data = null;
					
					if(ready == READY_STATE_COMPLETE)
					{
						data = reg.responseText;						
					}
					else
					{
						data = "Не торопись...["+READY+"]";	
						alert('4');
					}
					toConsole(data);
				}
				
				function toConsole(data)
				{
					if(console != null)
					{
						var newline = document.createElement("div");
						console.appendChild(newline);
						var txt = document.createTextNode(data);
						newline.appendChild(txt);
					}
				}
				
				window.onload = function (){
		
				 console =document.getElementById('console');
				 sendRequest("data.txt");
				}

Skipp 22.10.2012 10:19

onreadystatechange это событие и в данной строке этому событию устанавливается функция onReadyState, а сработает она когда произойдёт это событие.

newprogramm 22.10.2012 10:32

то есть грубо говоря onreadystatechange сработает только тогда когда ответит сервер...я правильно понял...а то в гугле я нашел тока фразу "Событие наступает при изменении состояния элемента страницы." иничего больше не найти

Skipp 22.10.2012 10:35

События наступают в такие моменты:
var READY_STATE_UNINITIALIZED = 0;
var READY_STATE_LOADING = 1;
var READY_STATE_LOADED = 2;
var READY_STATE_INTERATIVE = 3;
var READY_STATE_COMPLETE = 4;

newprogramm 22.10.2012 10:43

Все понял!!!...спс...


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