Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ajax] dźwięk po aktualizacji
Forum PHP.pl > Forum > XML, AJAX
grzegorz_g
chcialem wykorzystać (przerobić ) kod nospor'a ale nie potrafie go zastosować u siebie. Chodzi mi iż mam (skrót kodu)

  1. <?php
  2. <script language="JavaScript">
  3. advAJAX.setDefaultParameters({
  4.  
  5. onSuccess : function(obj) { document.getElementById(obj.tag).innerHTML = obj.responseText; }
  6.  
  7. });
  8.  
  9.  
  10. function wynik() {advAJAX.get({ tag: "wynik", url: "includes_bets/wynik_live.php" })};
  11.  
  12.  
  13.  
  14. window.setInterval(wynik,1000);
  15.  
  16.  
  17. </script>
  18.  
  19.  
  20.  
  21.  
  22. <div id="wynik"></div>
  23.  
  24. <div id="sounddiv" ></div>
  25.  
  26.  
  27. <script language="JavaScript">
  28. <!--
  29. var sbs = document.getElementById("sounddiv"); 
  30.  sbs.innerHTML="<embed src='images/open.wav' hidden=true autostart=true loop=false>";
  31. //-->
  32. </script>
  33. ?>



i teraz zależy mi by dźwięk uruchomił się jak nastąpi zmiana wyniku (id="wynik"), teraz jest po kazdym odświeżeniu strony
devnul
podpowiedź. zamiast samej biblioteki ajaxowej zainteresuj się jakimś frameworkiem javascript. Polecam jQuery i Prototype. Dzięki temu znacznie łatwiej będzie Ci wykonywać/przechwytywać zdarzenia.
grzegorz_g
mam wlasnie jquery, ale za bardzo nie wiem jak mi to ma pomoc w moim problemie
devnul
skoro masz jquery to po co używasz advajax'a? zrób to w jquery. przechwyć zdarzenie zwrotu danych via ajax i odegraj swój dzwięk. proste
bim2
To
  1. var sbs = document.getElementById("sounddiv");
  2. sbs.innerHTML="<embed src='images/open.wav' hidden=true autostart=true loop=false>";

wrzuć do:
onSuccess czyli:
  1. advAJAX.setDefaultParameters({
  2.  
  3. onSuccess : function(obj) { document.getElementById(obj.tag).innerHTML = obj.responseText; var sbs = document.getElementById("sounddiv"); sbs.innerHTML="<embed src='images/open.wav' hidden=true autostart=true loop=false>";}
  4.  
  5. });
grzegorz_g
nie o to chodzi, bo ja to mam uruchamiane co 1s

window.setInterval(wynik,1000);


zalezy mi by dzięk pojawil sie w momencie zmiany w tym divie
devnul
a przetestowałes ten kod? chyba nie - bo jesli dobrze tłumaczysz to działa z założenia tak jak powinien
grzegorz_g
oczywiście że testowalem, ale teraz jest efekt odgrywania sygnalu co sekunde
a przeciez nie o to mi chodzi - za każdym razem gra sygnal. Mi chodzi jak juz wspomnialem kilka razy, by ten dzwięk pojawil sie tylko w momencie gdy w divie nastapi jakas zmiana (następuje wtedy gdy w bazie zmienie wynik np. 0:0 na 1:0, i dopiero w tym momencie ma pojawić się sygnal)
devnul
prosta przeróbka
gdzies na początku kodu
Kod
var tmp_wynik='';

a później zamiast starej metody
Kod
advAJAX.setDefaultParameters({

onSuccess : function(obj) {
if (obj.responseText!=tmp_wynik){
document.getElementById(obj.tag).innerHTML = obj.responseText;
var sbs = document.getElementById("sounddiv");
sbs.innerHTML="<embed src='images/open.wav' hidden=true autostart=true loop=false>";
}
}
teraz ok?
grzegorz_g
  1. <script language="JavaScript">
  2.  
  3. var tmp_wynik='';
  4.  
  5.  
  6. advAJAX.setDefaultParameters({
  7.  
  8. onSuccess : function(obj) {
  9. if (obj.responseText!=tmp_wynik){
  10. document.getElementById(obj.tag).innerHTML = obj.responseText;
  11. var sbs = document.getElementById("sounddiv");
  12. sbs.innerHTML="<embed src='images/open.wav' hidden=true autostart=true loop=false>";
  13. }
  14. }
  15.  
  16.  
  17.  
  18.  
  19. function wynik() {advAJAX.get({ tag: "wynik", url: "includes_bets/wynik_live.php" })};
  20.  
  21.  
  22.  
  23. window.setInterval(wynik,1000);
  24.  



taki kod js i niestety nic nie wyswietla w <div id="wynik"></div>
devnul
ja się nie dziwie - czegoś mu brakuje
widze że kompletnie nie chce Ci sie myślec - niech strace.
  1. <script language="JavaScript">
  2.  
  3. var tmp_wynik='';
  4.  
  5.  
  6. advAJAX.setDefaultParameters({
  7.  
  8. onSuccess : function(obj) {
  9. if (obj.responseText!=tmp_wynik){
  10. document.getElementById(obj.tag).innerHTML = obj.responseText;
  11. var sbs = document.getElementById("sounddiv");
  12. sbs.innerHTML="<embed src='images/open.wav' hidden=true autostart=true loop=false>";
  13. }
  14. });
  15.  
  16.  
  17.  
  18.  
  19. function wynik() {advAJAX.get({ tag: "wynik", url: "includes_bets/wynik_live.php" })};
  20.  
  21.  
  22.  
  23. window.setInterval(wynik,1000);
  24.  
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.