Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ajax] Elementarne podstawy
Forum PHP.pl > Forum > XML, AJAX
masif
Nie chciałbym aby ten dział stał się czyjąś zmorą ale zaczynam z Ajaxem i mam pytania na których odpowiedzi nie mogę odnaleźć w książkach. Przynajmniej na razie. Dlatego w tym temacie będę pytał o rzeczy podstawowe.


Otóż mam skrypt który wywołuje instancję XMLHTTPRequest, instancja ładuję się poprawnie



Kod
  

<script type="text/javascript" language="javascript">

    var http_request = false;

    function makeRequest(url) {

        http_request = false;

        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {
                http_request.overrideMimeType('text/xml');
                // Przeczytaj o tym wierszu poniżej
            }
        } else if (window.ActiveXObject) { // IE
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }

        if (!http_request) {
            alert('Poddaję się :( Nie mogę stworzyć instancji obiektu XMLHTTP');
            return false;
        }
        http_request.onreadystatechange = function() { alertContents(http_request); };
        http_request.open('GET', url, true);
        http_request.send(null);

    }

  function alertContents(http_request) {

        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
                alert(http_request.responseText);
            } else {
                alert('Wystąpił problem z zapytaniem.');
            }
        }

    }
</script>


i potem:

Kod
<a href="" onclick="makeRequest('test.html')">Przeczytaj plik</a>



Funckcja ta pobiera mi plik z serwera i wyświetla jego zawartość po przez ALERT
(ta linijka kodu: alert(http_request.responseText);)

A ja bym chciał żeby mi wyświetlał tekst w postaci normalnego tekstu na stronie.
Napisałem więc taką modyfikację funkcji:

Kod
    function alertContents(http_request) {

        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
                document.write(http_request.responseText);
            } else {
                alert('Wystąpił problem z zapytaniem.');
            }
        }

    }


Też działa tylko że tekst mi znika w sekundzie.
Chciałbym żeby po kliknięciu w

Kod
<a href="" onclick="makeRequest('test.html')">Przeczytaj plik</a>


Tekst z pliku test.html był trwale wyświetlany na stronie.


Uff nie wiem czy za bardzo nie namieszałem ale może ktoś wie o co mi chodzi i zna odpowiedź na moje pytanie jak to zrobić?
maskelyn
Kod
document.getElementById("divId").innerHTML = http_request.responseText;
masif
Dzięki maskelyn
Troche pokombinowałem w inny sposób i mi wyszło.

Po załadowaniu pliku test.html wyświetla się całkowita zawartość tego pliku prawda?
Myślałem że zawartość pliku test.html jest wczytywana do dokumentu index.html z którego nastąpiło wywołanie.
No chyba że ja coś zmonciłem.

Da się tak zrobić aby konkretnym miejscu wyświetlała się zawartość pliku test.html?
maskelyn
  1. <div id="divId"></div>


Zawartość pliku test.html powinna wypełnić tego div'a.
masif
Mi się dziwnie nie ładuje w ten <div> tylko otwiera mi nową stronę.
Oto mój kod:


Kod
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<TITLE>AJAX</TITLE>




<script type="text/javascript" language="javascript">

    var http_request = false;

    function makeRequest(url) {

        http_request = false;

        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {
                http_request.overrideMimeType('text/xml');
                // Przeczytaj o tym wierszu poniżej
            }
        } else if (window.ActiveXObject) { // IE
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }

        if (!http_request) {
            alert('Poddaję się :( Nie mogę stworzyć instancji obiektu XMLHTTP');
            return false;
        }
        http_request.onreadystatechange = function() { alertContents(http_request); };
        http_request.open('GET', url, true);
        http_request.send(null);

    }





  function alertContents(http_request) {

        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
                document.write(http_request.responseText);
            } else {
                alert('Wystąpił problem z zapytaniem.');
            }
        }

    }

    document.getElementById("box").innerHTML = http_request.responseText;

</script>




</HEAD>
<BODY>

<a href="" onclick="makeRequest('test.html')">Przeczytaj plik</a>

<div id="box" style="background:#eee; width:200px; height:100px; margin:10px;"></div>





</BODY>
</HTML>


Może to: document.getElementById("box").innerHTML = http_request.responseText;
wstawiam w złym miejscu?

Jest gdzieś błąd?
Anatejms
Cytat(masif @ 19.01.2008, 22:31:34 ) *
Mi się dziwnie nie ładuje w ten <div> tylko otwiera mi nową stronę.
Oto mój kod:


Kod
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<TITLE>AJAX</TITLE>




<script type="text/javascript" language="javascript">

     var http_request = false;

     function makeRequest(url) {

         http_request = false;

         if (window.XMLHttpRequest) { // Mozilla, Safari,...
             http_request = new XMLHttpRequest();
             if (http_request.overrideMimeType) {
                 http_request.overrideMimeType('text/xml');
                 // Przeczytaj o tym wierszu poniżej
             }
         } else if (window.ActiveXObject) { // IE
             try {
                 http_request = new ActiveXObject("Msxml2.XMLHTTP");
             } catch (e) {
                 try {
                     http_request = new ActiveXObject("Microsoft.XMLHTTP");
                 } catch (e) {}
             }
         }

         if (!http_request) {
             alert('Poddaję się :( Nie mogę stworzyć instancji obiektu XMLHTTP');
             return false;
         }
         http_request.onreadystatechange = function() { alertContents(http_request); };
         http_request.open('GET', url, true);
         http_request.send(null);

     }





   function alertContents(http_request) {

         if (http_request.readyState == 4) {
             if (http_request.status == 200) {
                   document.getElementById("box").innerHTML = http_request.responseText;
// teraz jest dobrze :)
             } else {
                 alert('Wystąpił problem z zapytaniem.');
             }
         }

     }



</script>




</HEAD>
<BODY>

<a href="" onclick="makeRequest('test.html')">Przeczytaj plik</a>

<div id="box" style="background:#eee; width:200px; height:100px; margin:10px;"></div>





</BODY>
</HTML>


Może to: document.getElementById("box").innerHTML = http_request.responseText;
wstawiam w złym miejscu?

Jest gdzieś błąd?


poprawiłem kod smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.