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

  1. <?php
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  3. <html>
  4. <head>
  5.  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  6.  <script type="text/javascript" src="async.js"></script>
  7.  </head>
  8.  
  9.  
  10.  
  11.  <body onload="process()">
  12.  
  13.  
  14.  <div id="myDivElement" />
  15.  </body>
  16.  
  17.  </html>
  18. ?>



2. async.js

  1. <?php
  2. var xmlHttp = createXmlHttpRequestObject();
  3.  
  4. function createXmlHttpRequestObject()
  5. {
  6. var xmlHttp;
  7.  
  8.  
  9.  try
  10.  {
  11.  xmlHttp= new XMLHttpRequest();
  12.  
  13.  }
  14.  
  15.  catch(e)
  16.  
  17.  {
  18.   var XmlHttpVersions = new Array ("MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP" );
  19.   for(var i=0;i<XmlHttpVersions.length && !xmlHttp; i++)
  20.   {
  21.    try
  22.        {
  23.         xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
  24.        }
  25.        catch(e){}
  26.   }
  27.  }
  28.  if(!xmlHttp)
  29.   alert("blad podczas tworzenia obiektu XMLHttpRequest");
  30.   else
  31.    return xmlHttp;
  32.  
  33. }
  34.  
  35.  
  36. function process()
  37. {
  38.  
  39. if (xmlHttp)
  40. {
  41.  try
  42.  {
  43.   xmlHttp.open("GET","async.txt",true);
  44.  
  45.   xmlHttp.onreadystatechange=handleRequestStateChange();
  46.   xmlHttp.send(null);
  47.  
  48.  }
  49.   catch (e)
  50.   {
  51.    alert("Nie moge sie polaczyc z serwerem:\n" + e.toSring());
  52.    
  53.   }
  54. }
  55.  
  56. }
  57.  
  58.  
  59.  
  60. function handleRequestStateChange()
  61. {
  62. //alert(xmlHttp.readyState);
  63. myDiv = document.getElementById("myDivElement");
  64.  
  65. if(xmlHttp.readyState == 1)
  66. {
  67.  myDiv.innerHTML += "Status zadania 1 (ladowanie) <br/>";
  68. }
  69.  
  70. else if(xmlHttp.readyState == 2)
  71. {
  72.  myDiv.innerHTML += "Status zadania 2 (zaladowany) <br/>";
  73. }
  74.  
  75.  
  76. else if(xmlHttp.readyState == 3)
  77. {
  78.  myDiv.innerHTML += "Status zadania 3 (interaktywny) <br/>";
  79. }
  80.  
  81. else if(xmlHttp.readyState == 4)
  82. {
  83.  if (xmlHttp.status == 200)
  84.  {
  85.   try
  86.   {
  87.    response = xmlHttp.responseText;
  88.        myDiv.innerHtml += "Status zadania 4 (zaladowany). Serw odpowiedzial: </br>";
  89.        myDiv.innerHTML += response;
  90.   }
  91.  
  92.   catch(e){
  93.    alert("blad" + e.toString());
  94.        }
  95. }
  96. else
  97. {
  98. alert("problem  z uzyskaniem danych" + xmlHttp.statusText);
  99. }
  100. }
  101.  
  102. }
  103. ?>


3. async.txt

To odpowiedz serwera" title="Zobacz w manualu PHP" target="_manual