Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] what is not defined
Forum PHP.pl > Forum > Po stronie przeglądarki
MaestroS
Mam taką funkcję:

  1. <?php
  2. function Renew(what, user)
  3. {
  4. advAJAX.post({
  5. url : "exec/renew.php",
  6. parameters:{
  7.  what: what,
  8.  user: user,
  9. ident: "1"
  10. },
  11. onSuccess : function(obj) {
  12. document.getElementById(what).innerHTML='';
  13. document.getElementById(what).innerHTML=obj.responseText;
  14. setTimeout("Renew(what,user)", 1000);
  15. },
  16. });
  17. }
  18. ?>


Dlaczego krzyczy, że "what" jest niezdefiniowany ?
Chodzi o to:
  1. <?php
  2. setTimeout("Renew(what,user)", 1000);
  3. ?>
L_Devil
Ponieważ funkcja w timeout jest wywoływana globalnie (innymi słowy wszystkie parametry lokalne giną w momencie zakończenia wykonywania się funkcji Renew). Jeżeli what i user to "zwykłe" zmienne (a więc nie tablice, ani nic co trzeba serializować), to pomoże takie rozwiązanie:

Kod
function Renew(what, user)
{
    advAJAX.post({
                      url : "exec/renew.php",
                      parameters:{
                     what: what,
                     user: user,
                                ident: "1"
                  },
                  onSuccess : function(obj) {
                    document.getElementById(what).innerHTML='';
                    document.getElementById(what).innerHTML=obj.responseText;
                    setTimeout("Renew(" + what + "," + user + ")", 1000);
                },
                });
}

W innym wypadku konieczne może okazać się utworzenie globalnej tablicy, która będzie zapamiętywać wywołania Renew i jej parametry
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.