Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Odświeżanie diva
Forum PHP.pl > Forum > XML, AJAX
denis94
Witam. Istnieje taki skrypt który odświeża treść w div.

Kod
<script language=javascript>
// tworzymy zmienna
var object = false;

// tworzymy obiekt XMLHttpRequest (dla IE jest troche inaczej, stad funkcja warunkowa)
if (window.XMLHttpRequest) object = new XMLHttpRequest();
else if (window.ActiveXObject) object = new ActiveXObject("Microsoft.XMLHTTP");

// ponizsza funkcja pobiera dane ze wskazanego zrodla (pliku lub skryptu php) do wskazanego
// DIVa poprzez obiekt XMLHttpRequest    
function getData(dataSource, divID)
{
    // kontynuuje wylacznie gdy obiekt nie jest zajety
    if (object.readyState==4 || object.readyState==0)
    {
        // tworzy zmienna odpowiadajaca konkretnemu obiektowi na stronie
        var obj = document.getElementById(divID);

        // czyta z pliku lub wykonuje skrypt
        object.open("GET", dataSource);

        // definiuje metode obslugi odpowiedzi serwera
        object.onreadystatechange = function()
        {
            // kontynuuje jesli transmisja zostala zakonczona powodzeniem
            if (object.readyState == 4 && object.status == 200)
            obj.innerHTML= object.responseText;
        }
        // wysyla zadanie do serwera
         object.send(null);
      }
}

// w ponizszej funkcji wywolujemy funkcje getData z odpowiednimi parametrami
// oraz wywolujemy ja sama rekurencyjnie po co okreslony czas (w naszym wypadku 1000 ms)
function odswiezaj()
{
      getData('ajax.php','mojDIVIK');
      setTimeout("odswiezaj()", 1000);
}

</script>


potem dajemy:

Kod
<div id="mojDIVIK">
</div>

<script language=javascript>
odswiezaj();
</script>


lecz do diva wczytywana jest strona z innego pliku. W jaki sposób to przerobić aby zamiast wczytywanie strony z pliku do diva, div odświeżał treść którą po prostu w nim wpiszęquestionmark.gif Na przykład:

Kod
<div id="mojDIVIK">
<?php
echo rand(0,1000);
?>
</div>

<script language=javascript>
odswiezaj();
</script>


Proszę o pomoc.

PS. Muszę wprowadzić takie zmiany ponieważ, we wczytywanej stronie do diva nie działają żadne skrypty javascript. Myślę, że takie rozwiązanie rozwiąże ten problem.
kamil4u
Nie do końca rozumiem, trochę chaotycznie to napisałeś. Po prostu musisz w pliku AJAX umieść dany plik PHP, czyli w tym przypadku:
Kod
<?php
echo rand(0,1000);
?>

Jeżeli to co napisałem jest oczywiste dla Ciebie to musisz opisać dokładniej co chcesz zrobić(szczególnie to PS)

Nie zapominaj, że przeglądarka 'widzi' tylko liczbą, więc nigdzie dalej tego przesłać(jako kodu PHP) nie możesz.
denis94
chodzi mi o to aby w tym divie nie był plik. Tylko aby odświeżało się to co wpiszę między znacznikami <div></div>
Quantum
skasuj <?php, ?> tak żeby zostało echo rand(0, 1000);

zmień linijkę
[JAVASCRIPT] pobierz, plaintext
  1. object.open("GET", dataSource);
[JAVASCRIPT] pobierz, plaintext
na
[JAVASCRIPT] pobierz, plaintext
  1. object.open("GET", dataSource + "?code=" + obj.innerHTML);
[JAVASCRIPT] pobierz, plaintext

a w pliku ajax.php daj:
  1. if ( isset($_GET['code']) ) {
  2. eval($_GET['code']);
  3. }


Lecz pamiętaj, że to rozwiązanie to nie jest rozwiązanie winksmiley.jpg kod PHP ma być widoczny tylko dla interpretera PHP, w tym przypadku kod z <div>..</div> powinien być zapisany w pliku php, gdybyś to upublicznij dałbyś możliwość wykonania jakiegokolwiek innego kodu PHP poza tym który Ty tam wpiszesz poprzez trywialny atak xss. Może powinieneś zacząć od tego dlaczego te skrypty nie działają ? Najlepiej gdybyś zainteresował się jakąś biblioteką JS upraszczającą ten proces, może jQuery ? jest chyba najprostszy w nauce, a tutaj sposób, który rozwiązałby Twój problem: http://api.jquery.com/jQuery.getScript/.
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.