Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Ajax]Brak wyświetlania napisu w czasie rzeczywistym
Forum PHP.pl > Forum > XML, AJAX
Eldiane
Zakupilem ksiazke AJAX + PHP z przykladami, niestety po przepisaniu przykladu z palca i sprawdzeniu 2 razy nadal nie widze efektu, a mianowiscie podczas wpisywania danych do formularza przegladarka powinna generowac tekst pod ww formularzem

oto pliki jakie posiadam:
index.html
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>ajax i php, wydanie 2. - szybki start</title>
  5. <script type="text/javascript" src="quickstart.js"></script>
  6. </head>
  7. <body onload='process()'>
  8. server pragnie poznac twoje imie:
  9. <input type="text" id="myName" />
  10. <div id="divMessage" />
  11. </body>
  12. </html>


quickstart.js
  1. //przechowuje odwolanie do obiektu XMLHttpRequest.
  2. var xmlhttp = createXmlHttpRequestObject();
  3.  
  4. //Odzyskuje zawartosc obiektu XMLHttpRequest.
  5. function createXmlHttpRequestObject()
  6. {
  7. //przechowuje odwolanie do obiektu XmlHttpRequest
  8. var xmlHttp;
  9. //Fragment kodu uruchamiany w przegladarce IE6 lub jej starszych wersjach
  10. if(window.ActiveXObject)
  11. {
  12. try{
  13. xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  14. }
  15. catch(e) {
  16. xmlHttp = false;
  17. {
  18. }
  19. //Fragment uruchamiany w przegladarkach innych niz IE6
  20. else
  21. {
  22. try{
  23. xmlHttp = new XMLHttpRequest();
  24. }
  25. catch(e){
  26. xmlHttp = false;
  27. }
  28. }
  29.  
  30. //Zwraca zawartosc utworzonego obiektu lub wysyla komunikat o bledzie
  31. if(!xmlHttp)
  32. alert("blad podczas proby utworzenia obiektu XMLHttpRequest");
  33. else
  34. return xmlHttp;
  35. }
  36.  
  37. function process()
  38. {
  39. //Kontynuuje tylko w przypadku gdy obiekt xmlHttpRequest nie jest zajety
  40. if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
  41. {
  42. //Pobiera imie podane przez uzytkownika w formularzu
  43. name = encodeURIComponent(document.getElementById("myName").value);
  44. //wykonuje kod strony quickstart.php po stronie servera
  45. xmlHttp.open("GET", "quickstart.php?name=" +name, true);
  46. //definiuje metode ktora obsluzy odpowiedzi servera
  47. xmlHttp.onreadystatechange = handleServerResponse;
  48. //Wysylanie zadania do servera
  49. xmlHttp.send(NULL);
  50. }
  51. else
  52. //Jesli polaczenie nie jest mozliwe ponawia probe po 1 s
  53. setTimeout('process()',1000);
  54. }
  55.  
  56. function handleServerResponse()
  57. {
  58. //kontynuuje tylko jesli translakcja klient-server zostala ukonczona
  59. if(xmlHttp.readyState == 4)
  60. {
  61. //Status transakcji 200 oznacza ze zostala ona zakonczona powodzeniem
  62. if(xmlHttp.status == 200)
  63. {
  64. //Pobiera kod XML zawarty w odpowiedzi servera
  65. xmlResponse = xmlHttp.responseXML;
  66. //wybiera ze struktury XML glowny znacznik dokumentu (root element)
  67. xmlDocumentElement = xmlResponse.documentElement;
  68. //pobiera wiadomosc tekstowa umieszczona w pierwszym dziecku znacznika dokumentu
  69. hellomessage = xmlDocumentElement.firstChild.data;
  70. //Wyswietla dane pobrane z servera
  71. document.getElementById("divMessage").innerHTML = '<i>' + helloMessage + '</i>';
  72. //ponawia proces
  73. setTimeout('process()', 1000);
  74. }
  75. //Status zadania HTTP inny niz 200 powoduje wyswietlenie komunikatu o bledzie
  76. else
  77. {
  78. alert("Nie udalo sie nawiazac polaczenia z serverem: " + xmlHttp.statusText);
  79. }
  80. }
  81. }


oraz quickstart.php
  1. <?php
  2. //Stworzy odpowiedz z servera w postaci XML
  3. header('Content-Type: text/xml');
  4. //Tworzy naglowek pliku XML
  5. echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
  6. //Tworzy znacznik <response>
  7. echo '<response>';
  8. //pobiera imie podane przez uzytkownika
  9. $name = $_GET['name'];
  10. //Generuje odpowiedz w zaleznosci od imienia przeslanego przez klienta
  11. $userNames = array('YODA','AUDRA','BOGDAN', 'CRISTIAN');
  12. if (in_array(strtoupper($name), $userNames))
  13. echo 'Witaj, mistrzu ' . htmlentities($name) . '!';
  14. else if (trim($name) == '')
  15. echo 'Nieznajomy, podaj swoje imie!';
  16. else
  17. echo htmlentities($name) . ', nie znam cie!';
  18. //Zamyka znacznik </response>
  19. echo '</response>';
  20. ?>


Byłbym bardzo wdzięczny za wskazanie błędu jaki popełniam, być może to literówka, chodź sprawdzałem 2x i wszystko wydaje się być wporządku.
Z góry dziękuje, Eldiane
wookieb
Czekam na PW z poprawną nazwą tematu.
sosus
Na moj gust
var xmlhttp = createXmlHttpRequestObject();

to jest na wejsciu

dalej jest

var xmlHttp;
//Fragment kodu uruchamiany w przegladarce IE6 lub jej starszych wersjach
if(window.ActiveXObject)
{

WIELKOSC LITER MA ZNACZENIE , U MNIE BANGLA
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.