Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [AJAX] przeładowanie elementu co 30 sekund
krzychu0808
post 16.08.2008, 08:32:03
Post #1





Grupa: Zarejestrowani
Postów: 428
Pomógł: 2
Dołączył: 1.04.2007
Skąd: Pogorzelica

Ostrzeżenie: (10%)
X----


Witam....
Nie znam języka ajax ale może zrobienie odświeżenia 1 elementu co 30 sekund nie będzie trudne...
mam zegarek graficzny który wygląda tak:
  1. <? $aData = date("Hi", time()+300);?>
  2. <center><img src="images/zegar/<?=$aData[0]?>.gif" alt="Zegar"/><img src="images/zegar/<?=$aData[1]?>.gif" alt="Zegar"/><img src="images/zegar/dwukropek.gif" alt="img"/><img src="images/zegar/<?=$aData[2]?>.gif" alt="Zegar"/><img src="images/zegar/<?=$aData[3]?>.gif" alt="Zegar"/></center>


chodzi mi o to żeby co 30 sekund odświeżał się sam zegarek.. bez przeładowania strony a wiem że ajax daje taką możliwość... proszę o pomoc....
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 16)
Maxik
post 16.08.2008, 13:41:20
Post #2





Grupa: Zarejestrowani
Postów: 726
Pomógł: 129
Dołączył: 10.01.2008
Skąd: Gdańsk

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


Kod
function callAHAHget(url, div) {
    try {
         req = new XMLHttpRequest();
    } catch(err1) {
        try {
            req = new ActiveXObject("Msxml2.XMLHTTP");
        } catch(err2) {
            try {
                req = new ActiveXObject("Microsoft.XMLHTTP");
            } catch(err3) {
                req = false;
            }
        }
    }
    
    var rand = parseInt(Math.random()*99999999);
    req.onreadystatechange = function() {responseAHAH(div)};
    req.open("GET", url+'&rand='+rand, true);
    req.send(null);
}

function responseAHAH(div) {
    if(req.readyState==4) {
        if(req.status==200) {
            document.getElemenById(div).innerHTML = req.responseText;
        } else {
            alert('Błąd serwera')
        }
    } else {
        document.getElementById(div).innerHTML = 'Wczytywanie';
    }
}


Zapisz to sobie do pliku ahah.js .
W sekcji head strony daj: <script type="text/javascript" src="ahah.js"></script>
Do onLoad w body daj setInterval("callAHAHget('adres.php', 'zegarek');", 30000);

Pisane z palca, nic nie gwarantuję, powinno działać.


--------------------
Pomogłem? Kliknij przycisk Pomógł pod pomocnym Ci postem.
http://maxik.me/
Go to the top of the page
+Quote Post
krzychu0808
post 16.08.2008, 15:02:32
Post #3





Grupa: Zarejestrowani
Postów: 428
Pomógł: 2
Dołączył: 1.04.2007
Skąd: Pogorzelica

Ostrzeżenie: (10%)
X----


Coś nie działa w head:
  1. <script type="text/javascript" src="ahah.js"></script>


dodałem tak:
Kod
<body onload = "setInterval("callAHAHget('index.php', 'zegarek');", 30000);">
<? $aData = date("Hi", time()+300);?>
<center><img src="images/zegar/<?=$aData[0]?>.gif" alt="Zegar"/><img src="images/zegar/<?=$aData[1]?>.gif" alt="Zegar"/><img src="images/zegar/dwukropek.gif" alt="img"/><img src="images/zegar/<?=$aData[2]?>.gif" alt="Zegar"/><img src="images/zegar/<?=$aData[3]?>.gif" alt="Zegar"/></center>
</body>

ten kod co napisałem dałem jako ahah.js ale nic się nie dzieje nie odświeża..

proszę o pomoc....

Ten post edytował krzychu0808 16.08.2008, 16:53:34
Go to the top of the page
+Quote Post
Maxik
post 16.08.2008, 16:42:09
Post #4





Grupa: Zarejestrowani
Postów: 726
Pomógł: 129
Dołączył: 10.01.2008
Skąd: Gdańsk

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


<body onload="setInterval("callAHAHget('adres.php', 'zegarek');", 30000);">

W miejscu gdzie powinien być zegarek daj <div id="zegarek"></div>


--------------------
Pomogłem? Kliknij przycisk Pomógł pod pomocnym Ci postem.
http://maxik.me/
Go to the top of the page
+Quote Post
krzychu0808
post 16.08.2008, 17:06:33
Post #5





Grupa: Zarejestrowani
Postów: 428
Pomógł: 2
Dołączył: 1.04.2007
Skąd: Pogorzelica

Ostrzeżenie: (10%)
X----


Zrobiłem

Kod
<body onload="setInterval("callAHAHget('index.php', 'zegarek');", 30000);">
<div id="zegarek">
<div class="zegarek">
<? $aData = date("Hi", time()+300);?>
<center><img src="images/zegar/<?=$aData[0]?>.gif" alt="Zegar"/><img src="images/zegar/<?=$aData[1]?>.gif" alt="Zegar"/><img src="images/zegar/dwukropek.gif" alt="img"/><img src="images/zegar/<?=$aData[2]?>.gif" alt="Zegar"/><img src="images/zegar/<?=$aData[3]?>.gif" alt="Zegar"/></center>
</div>
</div>
</body>


i nadal nic się nie dzieje
Go to the top of the page
+Quote Post
nospor
post 16.08.2008, 17:10:28
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Kod
<body onload="setInterval('callAHAHget(\'index.php\', \'zegarek\');', 30000);">


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
krzychu0808
post 16.08.2008, 17:34:49
Post #7





Grupa: Zarejestrowani
Postów: 428
Pomógł: 2
Dołączył: 1.04.2007
Skąd: Pogorzelica

Ostrzeżenie: (10%)
X----


wyrzuca "Błąd Serwera"....
Ajax jest zainstalowany na serwerze...
Go to the top of the page
+Quote Post
AxZx
post 16.08.2008, 18:59:20
Post #8





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


tutaj masz przyklad jak mozna cos takiego zrobic
http://axzx.pl/technologie/


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
krzychu0808
post 16.08.2008, 19:16:22
Post #9





Grupa: Zarejestrowani
Postów: 428
Pomógł: 2
Dołączył: 1.04.2007
Skąd: Pogorzelica

Ostrzeżenie: (10%)
X----


hehe na tej stronie jest tylko przykład winksmiley.jpg
Go to the top of the page
+Quote Post
Cysiaczek
post 16.08.2008, 20:23:53
Post #10





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Cytat
hehe na tej stronie jest tylko przykład winksmiley.jpg


Dowiedz się, czy jest ajax
http://pl.wikipedia.org/wiki/AJAX

a potem użyj najprostszej biblioteki go obsłiugującej:
http://pl.wikipedia.org/wiki/AdvancedAJAX

Nie pytaj tylko skąd ściągnąć, bo się zdenerwuję smile.gif
Pozdrawiam.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
AxZx
post 17.08.2008, 21:25:50
Post #11





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


Cytat
hehe na tej stronie jest tylko przykład

no i? co w tym smiesznego?

Kod
setInterval('refresh2_shoutbox()', 2000);

function refresh2_shoutbox(){    
    $.get('responder.php?c=shoutbox&m=get', function(data){
        $('#shoutbox_content').html(data);
    });
}


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
Trojan
post 17.08.2008, 21:42:17
Post #12





Grupa: Zarejestrowani
Postów: 53
Pomógł: 10
Dołączył: 17.01.2008

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


krzychu0808 z tego co wiem Ajax działa po stronie przeglądarki (czyli nie jest potrzebny po stronie servera) . I trochę źle rozumiesz co koledzy mają na myśli.

TWORZYSZ 3 pliki:

ahah.js czyli to co podał Maxik w 2-gim poscie
zegarek.php czyli to co napisałeś w pierwszym poście (nic tam nie dodawaj nie zmieniaj)
index.html ma on wygladać tak:
  1. <head>
  2. <script type="text/javascript" src="ahah.js"></script>
  3. </head>
  4.  
  5. <body onload = "setInterval("callAHAHget('zegarek.php', 'zegarek');", 30000);">
  6. <div id="zegarek"></div>
  7. </body>
  8. </html>


umieść wszystkie pliki w jednym folderze
zegarek powinien pojawić się gdy odpalisz Index.html
Go to the top of the page
+Quote Post
Maxik
post 17.08.2008, 21:43:57
Post #13





Grupa: Zarejestrowani
Postów: 726
Pomógł: 129
Dołączył: 10.01.2008
Skąd: Gdańsk

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


Sprostuję post Trojana:
index.html:
  1. <script type="text/javascript" src="ahah.js"></script>
  2. </head>
  3.  
  4. <body onload = "setInterval(\"callAHAHget('zegarek.php', 'zegarek');\", 30000);">
  5. <div id="zegarek"></div>
  6. </body>
  7. </html>


--------------------
Pomogłem? Kliknij przycisk Pomógł pod pomocnym Ci postem.
http://maxik.me/
Go to the top of the page
+Quote Post
Trojan
post 17.08.2008, 22:26:06
Post #14





Grupa: Zarejestrowani
Postów: 53
Pomógł: 10
Dołączył: 17.01.2008

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


hehe Maxik \ nie pomaga w tym wypadku, zresztą zauważyłem że cała funkcja callAHAHget nie działa sadsmiley02.gif (przynajmniej u mnie) napisałem coś prostszego:
index.html
  1. <html>
  2.      <head>
  3.            <script type="text/javascript">
  4.  
  5.      //aby dzialalo na IE (niewiem kto tego uzywa jeszcze)
  6.      var ObiektXMLHttp = false;
  7.  
  8.      if (window.XMLHttpRequest){
  9.            ObiektXMLHttp = new XMLHttpRequest();
  10.            }else if(window.ActiveXObject){
  11.                  ObiektXMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
  12.                  }
  13.  
  14.      function zegar(){
  15.            if(ObiektXMLHttp){
  16.                  //pobieranie danych
  17.                  ObiektXMLHttp.open("GET", 'zegarek.php');
  18.  
  19.                  ObiektXMLHttp.onreadystatechange = function(){
  20.                        if(ObiektXMLHttp.readyState == 4){
  21.                              i = ObiektXMLHttp.responseText;
  22.                              document.getElementById('zegarek').innerHTML=i;
  23.                        }
  24.                  }
  25.  
  26.                  ObiektXMLHttp.send(null);
  27.            }
  28.      }
  29.  
  30.            </script>
  31.      </head>
  32.  
  33.      <body onload="setInterval('zegar();', 30000);">
  34.            <div id="zegarek"></div>
  35.      </body>
  36. </html>

w tym wypadku ahah.js nie jest już potrzebny
działa na 100% (sprawdzałem)

Ten post edytował Trojan 17.08.2008, 22:27:14
Go to the top of the page
+Quote Post
Maxik
post 18.08.2008, 00:05:51
Post #15





Grupa: Zarejestrowani
Postów: 726
Pomógł: 129
Dołączył: 10.01.2008
Skąd: Gdańsk

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


Z mojej biblioteki korzystam juz dobre 3 miesiące i zawsze działała. Chyba nawet wiem w czym był błąd: url jest nastawiony na minimum 1 parametr gdyż rand dodaje odrazu & zamiast ? więc zegarek.php?abc=abc już by działało.


--------------------
Pomogłem? Kliknij przycisk Pomógł pod pomocnym Ci postem.
http://maxik.me/
Go to the top of the page
+Quote Post
krzychu0808
post 18.08.2008, 09:35:30
Post #16





Grupa: Zarejestrowani
Postów: 428
Pomógł: 2
Dołączył: 1.04.2007
Skąd: Pogorzelica

Ostrzeżenie: (10%)
X----


Działa ale jest 1 problem jak ustawiliśmy co 30 sekund to zegarek się pojawia dopiero po 30 sekundach i się odświeża co 30 sekund skorzystałem z

Cytat
  1. index.html
  2. XML
  3. <head>
  4. <script type="text/javascript">
  5.  
  6. //aby dzialalo na IE (niewiem kto tego uzywa jeszcze)
  7. var ObiektXMLHttp = false;
  8.  
  9. if (window.XMLHttpRequest){
  10. ObiektXMLHttp = new XMLHttpRequest();
  11. }else if(window.ActiveXObject){
  12. ObiektXMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
  13. }
  14.  
  15. function zegar(){
  16. if(ObiektXMLHttp){
  17. //pobieranie danych
  18. ObiektXMLHttp.open("GET", 'zegarek.php');
  19.  
  20. ObiektXMLHttp.onreadystatechange = function(){
  21. if(ObiektXMLHttp.readyState == 4){
  22. i = ObiektXMLHttp.responseText;
  23. document.getElementById('zegarek').innerHTML=i;
  24. }
  25. }
  26.  
  27. ObiektXMLHttp.send(null);
  28. }
  29. }
  30.  
  31. </script>
  32. </head>
  33.  
  34. <body onload="setInterval('zegar();', 30000);">
  35. <div id="zegarek"></div>
  36. </body>
  37. </html>

w tym wypadku ahah.js nie jest już potrzebny
działa na 100% (sprawdzałem)
Go to the top of the page
+Quote Post
golaod
post 18.08.2008, 09:53:38
Post #17





Grupa: Zarejestrowani
Postów: 419
Pomógł: 42
Dołączył: 12.08.2008
Skąd: Wrocław

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


<body onload="zegar();setInterval('zegar();', 30000);">
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 29.06.2025 - 17:25