С помощью responseText и responseXML Вы можете принять данные отправленные сервером.
ТвитнутьС помощью свойства readyState Вы можете узнать состояние готовности сервера.
Сервер может находится в 5 состояниях готовности:
Во время обработки запроса свойство readyState поочередно принимает значения от 0 до 4.
Пример
var xhttp=new XMLHttpRequest(); xhttp.onreadystatechange=function(){ if (xhttp.readyState==0) document.getElementById('rs0').style.display='block'; if (xhttp.readyState==1) document.getElementById('rs1').style.display='block'; if (xhttp.readyState==2) document.getElementById('rs2').style.display='block'; if (xhttp.readyState==3) document.getElementById('rs3').style.display='block'; if (xhttp.readyState==4){ document.getElementById('rs4').style.display='block'; document.getElementById('result').innerHTML=xhttp.responseText; } } xhttp.open('GET','state.php',true); xhttp.send();
С помощью свойства status Вы можете узнать код ответа на Ваш запрос.
Код 200 означает - запрос обработан успешно, код 404 означает - страница не существует.
Пример
function requestBad(){ var xhttp=new XMLHttpRequest(); xhttp.onreadystatechange=function(){ document.getElementById('result').innerHTML=xhttp.status; } xhttp.open('GET','nepage',true); xhttp.send(); } function requestGood(){ var xhttp=new XMLHttpRequest(); xhttp.onreadystatechange=function(){ document.getElementById('result').innerHTML=xhttp.status; } xhttp.open('GET','test.xml',true); xhttp.send(); }
Обратите внимание: содержимое данного свойства доступно только для чтения.
Событие onreadystatechange выполняет код при изменении содержимого свойства readyState (т.е. во время успешного запроса код функции выполняется 4 раза).
Для того, чтобы корректно обработать ответ сервера необходимо добавить проверку условия if (XMLHttpRequest.readyState==4 && XMLHttpRequest.status==200) и только после этого получать и обрабатывать соответствующие данные.
Пример
var xhttp=new XMLHttpRequest(); xhttp.onreadystatechange=function(){ if (xhttp.readyState==0){ document.getElementById('rs0').style.display='block'; document.getElementById('res0').innerHTML=responseText; } if (xhttp.readyState==1){ document.getElementById('rs1').style.display='block'; document.getElementById('res1').innerHTML=responseText; } if (xhttp.readyState==2){ document.getElementById('rs2').style.display='block'; document.getElementById('res2').innerHTML=responseText; } if (xhttp.readyState==3){ document.getElementById('rs3').style.display='block'; document.getElementById('res3').innerHTML=responseText; } if (xhttp.readyState==4){ document.getElementById('rs4').style.display='block'; document.getElementById('res4').innerHTML=xhttp.responseText; } } xhttp.open('GET','state.php',true); xhttp.send();
Для того, чтобы принять ответ сервера используйте свойства объекта XMLHttpRequest responseText и responseXML.
Свойство | Описание |
---|---|
responseText | Хранит ответ сервера как строку символов. |
responseXML | Хранит ответ сервера как XML файл. |
Если запрошенные у сервера данные не являются XML данными, то для считывания ответа сервера используйте свойство responseText.
Пример
xhttp=new XMLHttpRequest(); xhttp.onreadystatechange=function(){ if (xhttp.readyState==4 && xhttp.status==200) document.getElementById("ajax").innerHTML=xhttp.responseText; } xhttp.open("GET","testfile.txt",true); xhttp.send();
Если Вы ожидаете получить от сервера XML данные используйте для считывания ответа сервера свойство responseXML.
Пример
xhttp=new XMLHttpRequest(); xhttp.onreadystatechange=function(){ if (xhttp.readyState==4 && xhttp.status==200){ var r=xhttp.responseXML; document.getElementById('ajax').innerHTML="Содержимое первого тэга name в XML файле: "+ r.getElementsByTagName('name')[0].childNodes[0].nodeValue; var dep=r.getElementsByTagName('dept'); var cont="Содержимое всех тэгов dept в XML файле: <br />"; for (var i=0;i<dep.length;i++){ cont+=(i+1)+". "+dep[i].childNodes[0].nodeValue+" руб.<br />"; } document.getElementById('ajax1').innerHTML=cont; } } xhttp.open("GET","test.xml",true); xhttp.send();
Задание 1 запросите файл test.xml из скрипта, примите ответ с помощью responseXML и затем:
Пример
<script type='text/javascript'> /* Пишите код здесь */ </script> </head> <body> <!-- Пишите код здесь --> </body>