Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ajax][js] Połączyć z czasem?
Forum PHP.pl > Forum > XML, AJAX > AJAX
Kayne
Witam

Więc mam kolejny problem, tym razem usiłuję połączyć JS i Ajax tak, by po określonym czasie (5 sekund) Ajax ściągnął zawartość strony chatmsgs.php.

Jak to zrobić? Te pytanie kieruje do Was.
UNK
Umiesc to gdzies na stronie, jesli chcesz aby bylo to 5 sekund od zaladowania strony to w <body onload='...'> albo w jakimkolwiek innym miejscu
Kod
window.setTimeout("function();", time);


gdzie function(); to nazwa funkcji do ktorej ma sie odwolac (nie wazne gdzie sie znajduje, plik js czy plik w ktorym jest odwolanie)
time czas podany w ms czyli np dla 1 sekundy time = 1000
Kayne
ok, dałem tak:

  1. <body onload="window.setTimeout("demo2();", time = 5000);">


Czy dobrze? Bo niestety nie działa, mogłem zrobić jakiś błąd... Próbowałem też tak:

  1. <body onload="window.setTimeout("demo2();", 5000);">


Ale żaden nie działa, jaki popełniłem błąd?
Yacho
  1. <body onload="window.setTimeout("demo2", 5000);">

tylko pamietaj ze jesli chcesz aby funkcja wykonywała sie caly czas co 5 sekund musisz pod koniec demo2 wywolac ja rekurencyjnie sama z siebie (setTimeout uruchamia metode z opoznieniem 5s ale robi to raz - musisz zastosowac rekurencje aby efekt był ciągły)
lukaszchm
Możesz użyć do tego funkcji setInterval MSDN oraz DevMozilla
Na podstawie tego co mój przedmówca napisał:
  1. ....
  2. <script type="text/javascript">
  3. var someInterval = null;
  4. function stop()
  5. {
  6. window.clearInterval(someInterval);
  7. }
  8. </head>
  9. <body onload="someInterval = window.setInterval("demo2();", 5000);">
  10. ...

i tutaj będzie się wykonywał w nieskończoność, ale możesz przerwać używając funkcji stop.
Dodatkowo podpowiem, że możesz nie podawać nazwy fynkcji w postaci łańcucha, ale mozesz podać referencje do funkcji, czyli równierz funkcjię anonimową
  1. <script type="text/javascript">
  2. var v1 = 10;
  3. var v2 = 0;
  4. var int = null ;
  5. function doSth(p1,p2){
  6. alert(p1-- + "::" + p2++);
  7. if ( p1 == p2 ) clearInterval(int) ;
  8. }
  9. // i teraz jakies zastosowania setInterval
  10. int = setInterval(doSth,3000,v1,v2);
  11. // można też coś takiego
  12. setInterval(function(){/* jakis kod */ }, 3000);
Kayne
Dziękuję, lukaszchm, działa poprawnie :-)

Pozdrawiam!
Zepco
Cytat(Kayne @ 7.07.2006, 18:11 ) *
ok, dałem tak:

  1. <body onload="window.setTimeout("demo2();", time = 5000);">


Czy dobrze? Bo niestety nie działa, mogłem zrobić jakiś błąd... Próbowałem też tak:

  1. <body onload="window.setTimeout("demo2();", 5000);">


Ale żaden nie działa, jaki popełniłem błąd?


Dałeś źle cudzysłowia.
Powinno być tak

  1. <body onload="window.setTimeout('demo2();', 5000);">


Jeśli korzystasz z Firefoxa, to tam jest bardzo dobra konsola Javascript, która wykaże Ci większość błędów. Warto z niej skorzystać.
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.