Помогите понять логику программы
Добрый день!
Списал программу разобрался все работает...и тут понял что вовсе и не все..не понял один нюанс строчка 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"); } |
onreadystatechange это событие и в данной строке этому событию устанавливается функция onReadyState, а сработает она когда произойдёт это событие.
|
то есть грубо говоря onreadystatechange сработает только тогда когда ответит сервер...я правильно понял...а то в гугле я нашел тока фразу "Событие наступает при изменении состояния элемента страницы." иничего больше не найти
|
События наступают в такие моменты:
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; |
Все понял!!!...спс...
|
Часовой пояс GMT +3, время: 18:14. |