Witam!
Mam do Was gorącą prośbę. Można powiedzieć, że dopiero zaczynam przygodę z AJAX'em. Mam takie oto skrypty:



Skrypt 1:

  1. <?php
  2. //ustawia metode obslugi bledu uzytkownika na error_handler
  3. set_error_handler('error_handler', E_ALL);
  4. //funkcja obslugujaca bledy
  5. function error_handler($errNo, $errStr, $errFile, $errLine)
  6. {
  7. //czysci wygenerpowane wczesniej dane
  8. //komunikat o bledzie danych wyjsciowych
  9. $error_message = 'ERRNO: ' . $errNo . chr(10).
  10. 'TEKST: ' .$errStr.chr(10).
  11. 'LOKALIZACJA: ' .$errFile.
  12. ', linia' .$errLine;
  13. echo $error_message;
  14. //zapobiega wykonaniu innych skryptow php
  15. exit();
  16. }
  17. ?>


Skrypt 2:

  1. <?php
  2. //laduje modul obslugi bledow
  3. require_once('error_handler.php');
  4.  
  5. //okresla format dokumentu z danymi wyjsciowymi na XML
  6. header('Content-Type: text/xml');
  7. //obliczanie wyniku:
  8. $firstNumber = $_GET['f'];
  9. $secondNumber = $_GET['s'];
  10. $result = $firstNumber / $secondNumber;
  11. //tworzy nowy dokument XML
  12. $dom = new DOMDocument;
  13.  
  14. //tworzy nadrzedny element <response>
  15. $response = $dom->createElement('response');
  16. $dom->appendChild($response);
  17.  
  18. $responseText = $dom->createTextNode($result);
  19. $response->appendChild($responseText);
  20.  
  21. //tworzy lancuch zawierajacy dane struktury XML
  22. $xmlString = $dom->saveXML();
  23. //wyswietla lancuch
  24. echo $xmlString;
  25. ?>


Skrypt 3:

  1. //przecjowanie obiektu XMLHTTP Request
  2. var xmlHttp = createXmlHttpRequestObject();
  3.  
  4. //tworzenie obiektu XMLHttpRequest
  5. function createXmlHttpRequestObject()
  6. {
  7. var xmlHttp;
  8. //dla wszystkich przegladarek oprocz IE6 i starszych
  9. try
  10. {
  11. xmlHttp = new XMLHttpRequest();
  12. }
  13. catch (e)
  14. {
  15. //dla wszystkich pozostałych przegladarek
  16. var xmlHttpVersion = new Array("MSXML2.XMLHTTP.6.0",
  17. "MSXML2.XMLHTTP.5.0",
  18. "MSXML2.XMLHTTP.4.0",
  19. "MSXML2.XMLHTTP.3.0",
  20. "MSXML2.XMLHTTP",
  21. "Microsoft.XMLHTTP");
  22. //sprawdzanie wszystkich wersji IE po kolei
  23. for (var i = 0; i < xmlHttpVersion.length; i++)
  24. {
  25. try
  26. {
  27. xmlHttp = new ActiveXObject(xmlHttpVersion[i]);
  28. }
  29. catch (e) {}
  30. }
  31. }
  32. //zwracanie utworzonego obiektu lub komunikatu o bledzie
  33. if (!xmlHttp)
  34. {
  35. alert('Błąd podczas tworzenia obiektu XMLHttpRequest');
  36. }
  37. else
  38. {
  39. return xmlHttp;
  40. }
  41. }
  42.  
  43. function process()
  44. {
  45. //kontynuuje tylko jesli istnieje obiekt xmlHttp
  46. if (xmlHttp)
  47. {
  48. //probuje polaczyc sie z serwerem
  49. try
  50. {
  51. //pobiera liczby podane przez uzytkownika
  52. var firstNumber = document.getElementById("firstNumber").value;
  53. var secondNumber = document.getElementById("secondNumber").value;
  54.  
  55. //tworzy liste parametrow
  56. var params = "f=" + firstNumber + "&s=" + secondNumber;
  57. //rozpoczyna asynchroniczne żądanie wysłane do serwera
  58. xmlHttp.open("GET", "morephp.php?" + params, true);
  59. xmlHttp.onreadystatechange = handleRequestStateChange();
  60. xmlHttp.send(null);
  61. }
  62. //w razieniepowodzenia wyswietla komunikat o bledzie
  63. catch (e)
  64. {
  65. alert('Nie można nawiązać połączenia z serwerem\n' + e.toString());
  66. }
  67. }
  68. }
  69.  
  70. //funkcja wywolana przy zmiane statusu zadania Http
  71. function handleRequestStateChange()
  72. {
  73. //kiedy readyState na wartosc 4 jestesmy gotowi do odebrania odpowiedz z serwera
  74. if (xmlHttp.readyState == 4)
  75. {
  76. //kontynuuje tylko jesli status HTTP ma wartosc "OK"
  77. if (xmlHttp.status == 200)
  78. {
  79. try
  80. {
  81. //przetwarza wiadomosc z serwera
  82. handleServerResponse();
  83. }
  84. catch (e)
  85. {
  86. //komunikat o bledzie
  87. alert('Błąd odczytu odpowiedzi:\n' + e.toString());
  88. }
  89. }
  90. else
  91. {
  92. //wyswietla odpowiedz o stanie
  93. alert('Pojawil sie problem przy pobieraniu danych\n' + xmlHttp.statusText);
  94. }
  95. }
  96. }
  97.  
  98. function handleServerResponse()
  99. {
  100. //pobiera odpowiedz serwera podana jako obiekt DOM XML
  101. var xmlResponse = xmlHttp.responseXML;
  102.  
  103. //przechwytywanie potencjalnych bledow przez IE I Opere
  104. if(!xmlResponse || !xmlResonse.documentElement)
  105. {
  106. throw ('Invalid XML structure:\n' + xmlHttp.responseText);
  107. }
  108.  
  109. //przechwytywanie potencjalnych bledow przez Firefox
  110. var rootNodeName = xmlResponse.documentElement.nodeName;
  111. if (rootNodeName = "parsererror")
  112. {
  113. throw('Invalid XML structure:\n' + xmlHttp.responseText);
  114. }
  115.  
  116. var xmlRoot = xmlResponse.documentElement;
  117. //sprawdzanie czy otrzymalismy taki dokument XML jakiego sie spodziewalismy
  118. if (rootNodeName != "response" || !xmlRoot.firstChild)
  119. {
  120. throw('Niepoprawna struktura XML:\n' + xmlResponseText);
  121. }
  122.  
  123. //wartosc potrzebna do wyswietlenia potomka elementu nadrzednego <response>
  124. responseText = xmlRoot.firstChild.data;
  125. //wyswietlaniewiadomosci dla urzytkownika
  126. myDiv = document.getElementById("myDivElement");
  127. myDiv.innerHTML = "Wynik to " + responseText;
  128. }


Mój problem polega na tym, że po wciśnieciu buttona na stronie nic się nie dzieje, a gdy ejde w konsole błędów w Narzędziach Mozilli dostaje takie cuś:
1: ERRNO: 8
2: TEKST: Undefined index: f
3: LOKALIZACJA: /var/www/AJAX/foundations/morephp/morephp.php, linia10


Sprawdzałem kod 100 razy próbowałem wyszukać na googlach o co chodzi ale już straciłem cierpliwość do tego dlatego prosze Was o pomoc