• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Ajaxowe odświeżanie elementu

Object Storage Arubacloud
0 głosów
265 wizyt
pytanie zadane 30 stycznia 2020 w JavaScript przez piwokarpackie Nowicjusz (180 p.)
Witam.

Posiadam taki kod jak poniżej, który działa wyśmienicie. Plik php zwraca z bazy wartość która jest wyświetlana w div bez przeładowania strony. Pytanie brzmi. Czy da się użyć takiej konstrukcji do uruchomienia więcej niż jednego pliku php i wyświetlenia wartości w więcej niż jednym div-e.

Pozdrawiam.

 

</script>  
<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('stat.php','stat');
     
      setTimeout("odswiezaj()", 1000);
}
 
</script>

<div id=stat></div>

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

1 odpowiedź

+1 głos
odpowiedź 30 stycznia 2020 przez Comandeer Guru (601,590 p.)
wybrane 31 stycznia 2020 przez ScriptyChris
 
Najlepsza

Ten skrypt ma z dobre 15 lat, wypadałoby go zaktualizować.

Niemniej tak – da się to zrobić, po prostu dokładając kolejne wywołania getData, np. getData( 'innyPlik.php', 'iddrugiegodiva' ).

komentarz 30 stycznia 2020 przez piwokarpackie Nowicjusz (180 p.)
Próbowałem
komentarz 30 stycznia 2020 przez Comandeer Guru (601,590 p.)
// ponizsza funkcja pobiera dane ze wskazanego zrodla (pliku lub skryptu php) do wskazanego
// DIVa poprzez obiekt XMLHttpRequest    
function getData(dataSource, divID)
{
	// tworzymy obiekt XMLHttpRequest 
	var object = new XMLHttpRequest();

    // 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('stat.php','stat');
	  getData('innyPlik.php', 'innyDiv');
     
      setTimeout(odswiezaj, 1000);
}

W takiej formie powinno działać. Oryginalny kod za każdym razem korzystał z tego samego obiektu XMLHttpRequest, przez co nie dało się robić więcej niż jednego żądania naraz.

komentarz 30 stycznia 2020 przez piwokarpackie Nowicjusz (180 p.)

Jesteś moim osobistym Chrystusem. Dziękuję pozdrawiam.

Podobne pytania

0 głosów
3 odpowiedzi 342 wizyt
pytanie zadane 19 sierpnia 2018 w JavaScript przez hiper007 Stary wyjadacz (11,270 p.)
+1 głos
1 odpowiedź 433 wizyt
pytanie zadane 6 kwietnia 2021 w HTML i CSS przez Nearr Obywatel (1,890 p.)
0 głosów
1 odpowiedź 378 wizyt
pytanie zadane 10 października 2020 w PHP przez KumberTwo Dyskutant (8,270 p.)

92,584 zapytań

141,434 odpowiedzi

319,671 komentarzy

61,968 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...