Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem początkującego - dlaczego nie działa ten kod?, AJAX + PHP
m010ch
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 15.12.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Witam.

Zakupiłem niedawno książkę: "AJAX i PHP. Tworzenie interaktywnych aplikacji internetowych" (wyd. Helion) i mam niestety problem już na pierwszym przykładzie z tej książki (zapewne jakiś błąd w druku, bo kod jest prawie że w 100% skopiowany z książki). Niestety - moja mała (jeszcze) wiedza na temat AJAKSA nie pozwala mi rozwiązać problemu samodzielnie (uprzedzając pytania - Google też nie pomogło).

Plik index.html:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2.  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  4. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  5.  
  6. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl">
  7. <head>
  8. <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
  9. <title>AJAX i PHP: Szybki start</title>
  10. <script type="text/javascript" src="quickstart.js"></script>
  11. </head>
  12. <body onload="process()">
  13. <p>Serwer chce poznać Twoje imię: <input type="text" id="myName" /></p>
  14. <p id="ajaxMessage" />
  15. </body>
  16. </html>


Plik quickstart.js:

Kod
var xmlHttp = createXmlHttpRequestObject();

function createXmlHttpRequestObject() {
    var xmlHttp;

    if (window.ActiveXObject) {
        try {
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (e) {
            xmlHttp = false;
        }
    }
    else {
        try {
            xmlHttp = new XMLHttpRequest();
        }
        catch (e) {
            xmlHttp = false;
        }
    }
    
    if (!xmlHttp) {
        alert("Błąd podczas tworzenia obiektu XMLHttpRequest!");
    }
    else {
        return xmlHttp;
    }
}

function process() {
    if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0) {
        name = encodeURIComponent(document.getElementById("myName").value);
        xmlHttp.open("GET", "quickstart.php?name=" + name, true);
        xmlHttp.onreadystatechange = handleServerResponse;
        xmlHttp.send(null);
        xmlHttp.overrideMimeType("application/xhtml+xml; charset=utf-8");
    }
    else {
        setTimeout("process()", 1000);
    }
}

function handleServerResponse() {
    if (xmlHttp.readyState == 4) {
        if (xmlHttp.status == 200) {
            xmlResponse = xmlHttp.responseXML;
            xmlDocumentElement = xmlResponse.documentElement;
            helloMessage = xmlDocumentElement.firstChild.data;
            document.getElementById("ajaxMessage").innerHTML = "<em>" + helloMessage + "</em>";
            setTimeout("process()", 1000);
        }
        else {
            alert("Wystąpił błąd podczas uzyskiwania dostępu do serwera: " + xmlHttp.statusText);
        }
    }
}


Plik quickstart.php:

  1. <?php
  2. header("Content-Type: text/xml; charset=utf-8");
  3.  
  4. echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
  5. echo '<response>';
  6.  
  7. $name = $_GET['name'];
  8. $userNames = array('MICHAŁ', 'FILIP', 'MARCIN', 'RAFAŁ', 'GRZEGORZ');
  9.  
  10. if (in_array(strtoupper($name), $userNames)) {
  11. echo 'Witaj mistrzu ' . htmlentities($name) . '!';
  12. }
  13. else if (trim($name) == '') {
  14. echo 'Nieznajomy, podaj swoje imię!';
  15. }
  16. else {
  17. echo htmlentities($name) . ', nie znam Cię!';
  18. }
  19.  
  20. echo '</response>';
  21. ?>


Po otworzeniu strony pod Firefoksem, Firebug wyrzuca cały czas jeden i ten sam error:

  1. xmlResponse has no properties
  2. Line 47


Moje pytanie brzmi - w jaki sposób poprawić wywołanie funkcji handleServerResponse(), tak aby kod ten wreszcie zaczął działać?

Z góry dziękuję za pomoc.

Ten post edytował m010ch 30.09.2007, 11:16:48
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.12.2025 - 23:57