Mam do Was gorącą prośbę. Można powiedzieć, że dopiero zaczynam przygodę z AJAX'em. Mam takie oto skrypty:
Skrypt 1:
<?php //ustawia metode obslugi bledu uzytkownika na error_handler //funkcja obslugujaca bledy function error_handler($errNo, $errStr, $errFile, $errLine) { //czysci wygenerpowane wczesniej dane //komunikat o bledzie danych wyjsciowych $error_message = 'ERRNO: ' . $errNo . chr(10). 'TEKST: ' .$errStr.chr(10). 'LOKALIZACJA: ' .$errFile. ', linia' .$errLine; //zapobiega wykonaniu innych skryptow php } ?>
Skrypt 2:
<?php //laduje modul obslugi bledow require_once('error_handler.php'); //okresla format dokumentu z danymi wyjsciowymi na XML //obliczanie wyniku: $firstNumber = $_GET['f']; $secondNumber = $_GET['s']; $result = $firstNumber / $secondNumber; //tworzy nowy dokument XML $dom = new DOMDocument; //tworzy nadrzedny element <response> $response = $dom->createElement('response'); $dom->appendChild($response); $responseText = $dom->createTextNode($result); $response->appendChild($responseText); //tworzy lancuch zawierajacy dane struktury XML $xmlString = $dom->saveXML(); //wyswietla lancuch ?>
Skrypt 3:
//przecjowanie obiektu XMLHTTP Request var xmlHttp = createXmlHttpRequestObject(); //tworzenie obiektu XMLHttpRequest function createXmlHttpRequestObject() { var xmlHttp; //dla wszystkich przegladarek oprocz IE6 i starszych try { xmlHttp = new XMLHttpRequest(); } catch (e) { //dla wszystkich pozostałych przegladarek "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"); //sprawdzanie wszystkich wersji IE po kolei for (var i = 0; i < xmlHttpVersion.length; i++) { try { xmlHttp = new ActiveXObject(xmlHttpVersion[i]); } catch (e) {} } } //zwracanie utworzonego obiektu lub komunikatu o bledzie if (!xmlHttp) { alert('Błąd podczas tworzenia obiektu XMLHttpRequest'); } else { return xmlHttp; } } function process() { //kontynuuje tylko jesli istnieje obiekt xmlHttp if (xmlHttp) { //probuje polaczyc sie z serwerem try { //pobiera liczby podane przez uzytkownika var firstNumber = document.getElementById("firstNumber").value; var secondNumber = document.getElementById("secondNumber").value; //tworzy liste parametrow var params = "f=" + firstNumber + "&s=" + secondNumber; //rozpoczyna asynchroniczne żądanie wysłane do serwera xmlHttp.open("GET", "morephp.php?" + params, true); xmlHttp.onreadystatechange = handleRequestStateChange(); xmlHttp.send(null); } //w razieniepowodzenia wyswietla komunikat o bledzie catch (e) { alert('Nie można nawiązać połączenia z serwerem\n' + e.toString()); } } } //funkcja wywolana przy zmiane statusu zadania Http function handleRequestStateChange() { //kiedy readyState na wartosc 4 jestesmy gotowi do odebrania odpowiedz z serwera if (xmlHttp.readyState == 4) { //kontynuuje tylko jesli status HTTP ma wartosc "OK" if (xmlHttp.status == 200) { try { //przetwarza wiadomosc z serwera handleServerResponse(); } catch (e) { //komunikat o bledzie alert('Błąd odczytu odpowiedzi:\n' + e.toString()); } } else { //wyswietla odpowiedz o stanie alert('Pojawil sie problem przy pobieraniu danych\n' + xmlHttp.statusText); } } } function handleServerResponse() { //pobiera odpowiedz serwera podana jako obiekt DOM XML var xmlResponse = xmlHttp.responseXML; //przechwytywanie potencjalnych bledow przez IE I Opere if(!xmlResponse || !xmlResonse.documentElement) { throw ('Invalid XML structure:\n' + xmlHttp.responseText); } //przechwytywanie potencjalnych bledow przez Firefox var rootNodeName = xmlResponse.documentElement.nodeName; if (rootNodeName = "parsererror") { throw('Invalid XML structure:\n' + xmlHttp.responseText); } var xmlRoot = xmlResponse.documentElement; //sprawdzanie czy otrzymalismy taki dokument XML jakiego sie spodziewalismy if (rootNodeName != "response" || !xmlRoot.firstChild) { throw('Niepoprawna struktura XML:\n' + xmlResponseText); } //wartosc potrzebna do wyswietlenia potomka elementu nadrzednego <response> responseText = xmlRoot.firstChild.data; //wyswietlaniewiadomosci dla urzytkownika myDiv = document.getElementById("myDivElement"); myDiv.innerHTML = "Wynik to " + responseText; }
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