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<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <title>ajax i php, wydanie 2. - szybki start
</title> <script type="text/javascript" src="quickstart.js"></script> <body onload='process()'> server pragnie poznac twoje imie:
<input type="text" id="myName" />
quickstart.js//przechowuje odwolanie do obiektu XMLHttpRequest.
var xmlhttp = createXmlHttpRequestObject();
//Odzyskuje zawartosc obiektu XMLHttpRequest.
function createXmlHttpRequestObject()
{
//przechowuje odwolanie do obiektu XmlHttpRequest
var xmlHttp;
//Fragment kodu uruchamiany w przegladarce IE6 lub jej starszych wersjach
if(window.ActiveXObject)
{
try{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e) {
xmlHttp = false;
{
}
//Fragment uruchamiany w przegladarkach innych niz IE6
else
{
try{
xmlHttp = new XMLHttpRequest();
}
catch(e){
xmlHttp = false;
}
}
//Zwraca zawartosc utworzonego obiektu lub wysyla komunikat o bledzie
if(!xmlHttp)
alert("blad podczas proby utworzenia obiektu XMLHttpRequest");
else
return xmlHttp;
}
function process()
{
//Kontynuuje tylko w przypadku gdy obiekt xmlHttpRequest nie jest zajety
if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
{
//Pobiera imie podane przez uzytkownika w formularzu
name = encodeURIComponent(document.getElementById("myName").value);
//wykonuje kod strony quickstart.php po stronie servera
xmlHttp.open("GET", "quickstart.php?name=" +name, true);
//definiuje metode ktora obsluzy odpowiedzi servera
xmlHttp.onreadystatechange = handleServerResponse;
//Wysylanie zadania do servera
xmlHttp.send(NULL);
}
else
//Jesli polaczenie nie jest mozliwe ponawia probe po 1 s
setTimeout('process()',1000);
}
function handleServerResponse()
{
//kontynuuje tylko jesli translakcja klient-server zostala ukonczona
if(xmlHttp.readyState == 4)
{
//Status transakcji 200 oznacza ze zostala ona zakonczona powodzeniem
if(xmlHttp.status == 200)
{
//Pobiera kod XML zawarty w odpowiedzi servera
xmlResponse = xmlHttp.responseXML;
//wybiera ze struktury XML glowny znacznik dokumentu (root element)
xmlDocumentElement = xmlResponse.documentElement;
//pobiera wiadomosc tekstowa umieszczona w pierwszym dziecku znacznika dokumentu
hellomessage = xmlDocumentElement.firstChild.data;
//Wyswietla dane pobrane z servera
document.getElementById("divMessage").innerHTML = '
<i>' + helloMessage + '
</i>';
//ponawia proces
setTimeout('process()', 1000);
}
//Status zadania HTTP inny niz 200 powoduje wyswietlenie komunikatu o bledzie
else
{
alert("Nie udalo sie nawiazac polaczenia z serverem: " + xmlHttp.statusText);
}
}
}
oraz quickstart.php<?php
//Stworzy odpowiedz z servera w postaci XML
header('Content-Type: text/xml'); //Tworzy naglowek pliku XML
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'; //Tworzy znacznik <response>
//pobiera imie podane przez uzytkownika
$name = $_GET['name'];
//Generuje odpowiedz w zaleznosci od imienia przeslanego przez klienta
$userNames = array('YODA','AUDRA','BOGDAN', 'CRISTIAN'); else if (trim($name) == '') echo 'Nieznajomy, podaj swoje imie!'; else
//Zamyka znacznik </response>
?>
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