Witam!
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
header('Content-Type: text/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
var xmlHttpVersion
= new Array("MSXML2.XMLHTTP.6.0", "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