Robie przykład z książki, który ma zilustrować działanie obiektu XMLHttpRequest. Przedstawia on status żądania i ostatecznie odczytuje odpowiedź serwera czyli odczytuje tekst zamieszczony w pliku tekstowym async.txt. Jednak coś nie gra - przeglądarka pokazuje tylko: Status zadania 1 (ladowanie)
Konsola błędów w przeglądarce nie pokazuje żadnych błędów.
Przedstawiam kod:
1. async.html
<?php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script type="text/javascript" src="async.js"></script>
</head>
<body onload="process()">
<div id="myDivElement" />
</body>
</html>
?>
2. async.js
<?php
var xmlHttp = createXmlHttpRequestObject();
function createXmlHttpRequestObject()
{
var xmlHttp;
try
{
xmlHttp= new XMLHttpRequest();
}
catch(e)
{
var XmlHttpVersions
= new Array ("MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP" ); for(var i=0;i<XmlHttpVersions.length && !xmlHttp; i++)
{
try
{
xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
}
catch(e){}
}
}
if(!xmlHttp)
alert("blad podczas tworzenia obiektu XMLHttpRequest");
else
return xmlHttp;
}
function process()
{
if (xmlHttp)
{
try
{
xmlHttp.open("GET","async.txt",true);
xmlHttp.onreadystatechange=handleRequestStateChange();
xmlHttp.send(null);
}
catch (e)
{
alert("Nie moge sie polaczyc z serwerem:\n" + e.toSring());
}
}
}
function handleRequestStateChange()
{
//alert(xmlHttp.readyState);
myDiv = document.getElementById("myDivElement");
if(xmlHttp.readyState == 1)
{
myDiv.innerHTML += "Status zadania 1 (ladowanie) <br/>";
}
else if(xmlHttp.readyState == 2)
{
myDiv.innerHTML += "Status zadania 2 (zaladowany) <br/>";
}
else if(xmlHttp.readyState == 3)
{
myDiv.innerHTML += "Status zadania 3 (interaktywny) <br/>";
}
else if(xmlHttp.readyState == 4)
{
if (xmlHttp.status == 200)
{
try
{
response = xmlHttp.responseText;
myDiv.innerHtml += "Status zadania 4 (zaladowany). Serw odpowiedzial: </br>";
myDiv.innerHTML += response;
}
catch(e){
alert("blad" + e.toString());
}
}
else
{
alert("problem z uzyskaniem danych" + xmlHttp.statusText);
}
}
}
?>
3. async.txt
To odpowiedz serwera" title="Zobacz w manualu PHP" target="_manual