northwest
(northwest)
24 Listopad 2012 19:39
#1
Witam serdecznie,
Próbuję zrobić skrypt w jquery który będzie się wykonywał cały czas:
Odliczamy od 5 sekund do 0 czas (chodzi na okrągło)
resetujemy licznik i odliczamy ponownie 5 sekund
Mam taki kod:
[/code]
niestety ten skrypt ani nie odlicza, ani nie wyświetla alertu…
Czy mógłbym prosić o pomoc z poskładaniem tego skryptu?
Z góry dziękuje za pomoc,
Northwest
grzelix
(Grzelix)
24 Listopad 2012 21:44
#2
Skrypt odliczania poprawnie wygląda tak:
$('#defaultCountdown1').countdown({until: '+5s', format: 'HMS', onTick: everyFive});
function everyFive(periods) {
if ($.countdown.periodsToSeconds(periods) == 0) {
//do some logic
$('#defaultCountdown1').countdown('option',{until: +5, format: 'HMS', onTick: everyFive});
}
}
z wyjątkiem tym że użycie alertu powoduje oczekiwanie na akcje użytkownika i blokuje dalsze działanie skryptu. (I tak nawiasem - pobrałeś źródła pluginu jquery.countdown i po prawnie podałeś ścieżkę). razem z postem kod może wyglądać tak:
$('#defaultCountdown1').countdown({until: '+5s', format: 'HMS', onTick: everyFive});
function everyFive(periods) {
if ($.countdown.periodsToSeconds(periods) == 0) {
$.post("example.php", function() { alert("success");})
.success(function() { alert("second success"); })
.error(function() { alert("error"); })
.complete(function() { alert("complete"); });
$('#defaultCountdown1').countdown('option',{until: +5, format: 'HMS', onTick: everyFive});
}
}
tutaj miałeś złą semantykę - zdarzenie ma nazwę onTick a nie nTick
nie wiem jakie dane zwracasz w tym zapytaniu ale żeby to poprawnie zrobić zapoznaj się ze stroną
http://api.jquery.com/jQuery.post/
a dokładnie z przedostatnim przykładem
Ogólna rada przy tworzeniu kodu: rozbijaj problem na coraz mniejsze problemy aż będziesz wstanie je rozwiązać. Nie pisz całej metody, tylko sprawdzaj co linijka twój postęp.
northwest
(northwest)
24 Listopad 2012 22:25
#3
aha, dziękuje za pomoc
skrypt działa prawie… jak bym chciał wyświetlić to, co zwraca pliczek php, to co powinienem dodać?
ps. dlaczego w tej konstrukcji:
$.post("plik.php", function() { alert("success");})
.success(function() { alert("second success"); })
.error(function() { alert("error"); })
.complete(function() { alert("complete"); });
wyświetla mi wszystkie możliwe alerty? Nie powinno być tak, że w zależności od statusu wykonania posta powinien się wyświetlać adekwatny alert?
grzelix
(Grzelix)
24 Listopad 2012 22:45
#4
Jeśli zapytanie zakończy się sukcesem to w tej konstrukcji powinny wyświetlić się 3 alerty (bez error alert)
W przypadku błędy 2 alert error i alert complete.
pisałem gdzie masz zajrzeć w sprawie zwracanych danych. Czy aż takie trudne?
$.post("plik.php", function( data ) {alert (data);}
....
chyba tak, sprawdź sam.
northwest
(northwest)
24 Listopad 2012 23:03
#5
działa… dziękuje za pomoc