Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript] Problem z Request() i setTimeout()
Skie
post
Post #1





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

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


Witam,
Ten temat co prawda nawiązuje do tematu, który poprzednio założyłem, ale dotyczy innego problemu więc zdecydowałem założyć osobny topic.

A więc tak, Request'em w koncu udalo mi sie pobrac plik JS.

Zastosowałem funkcję eval() w poniższy sposób:

Kod
eval(req_js.responseText);


Sprawdziłem czy działa - okazało się, że tak.... ale z jednym problemem.

Plik JS jest klasą zawierającą kilka metod, a w tym jedna, mianowicie battle.Animation(id) która wykonuje się kilka razy (tj. na samym koncu funkcja sprawdza czy skrypt "przeanalizowal" cala tablice - jezeli nie to ta metoda wywoluje sama siebie ponownie z innym parametrem 'id').

Niestety po pierwszym wykonaniu pętli "gubi" się gdzieś klasa battle. (battle undefined) i skrypt konczy swe dzialanie.

O ile ten plik (JS) dzialal dobrze, gdy byl normalnie wczytywany to przy zastosowaniu eval() cos sie chrzani.
Może mi ktoś wytłumaczyć dlaczego?

EDIT:
Edytowałem temat gdyż odkryłem co się chrzani. Gdy podmienię

Kod
setTimeout('battle.Animation('+id+');', battle.Time);


na

Kod
battle.Animation(id);


To wszystko działa. Niestety to rozwiązanie mnie nie zadowala, gdyż głównym zastosowaniem tej klasy jest właśnie wyświetlanie tych wyników co określony czas a nie wszystko razem.

Ten post edytował Skie 28.08.2008, 17:13:16
Go to the top of the page
+Quote Post
lord_t
post
Post #2





Grupa: Zarejestrowani
Postów: 603
Pomógł: 131
Dołączył: 24.07.2007
Skąd: Górny Śląsk

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


Zastosuj się do posta @revyag w temacie http://forum.php.pl/index.php?showtopic=10...mp;#entry510346 i będzie wszystko grać.
Go to the top of the page
+Quote Post
Skie
post
Post #3





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

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


Jeżeli chodzi Ci o

Kod
eval('('+req_js.responseText+')');


To ten sposób w ogóle nie działa, natomiast jeśli chodzi o jQuery - nie będę przecież "wmontowywał" biblioteki tylko dla jednego pliku.
Go to the top of the page
+Quote Post
lord_t
post
Post #4





Grupa: Zarejestrowani
Postów: 603
Pomógł: 131
Dołączył: 24.07.2007
Skąd: Górny Śląsk

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


Prawie to samo robi zdarzenie onload dla body:
  1. <body onload="init();">
  2. ...


A co do jQuery'owego ready to są krótkie skrypty które robią to samo (szukaj w google: domready js)
Go to the top of the page
+Quote Post
Skie
post
Post #5





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

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


Tak, to być może byłby dobry patent, gdyby nie to, że wszystko w znacznikach <scirpt> i </script> jest blokowne.

Nawet takie cuś nie zadziała:

Kod
<script type=text/javascript>
alert('error');
</script>
Go to the top of the page
+Quote Post
lord_t
post
Post #6





Grupa: Zarejestrowani
Postów: 603
Pomógł: 131
Dołączył: 24.07.2007
Skąd: Górny Śląsk

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


Musi działać. Jakieś błędy w firebugu?
Go to the top of the page
+Quote Post
Skie
post
Post #7





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

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


Gdyby działał to by się wyświetlił ten komunikat. A jakoś tego nie widzę. Zdaje się że Request AJAXa blokuje skrypty JS w wywolanym pliku.
Go to the top of the page
+Quote Post
lord_t
post
Post #8





Grupa: Zarejestrowani
Postów: 603
Pomógł: 131
Dołączył: 24.07.2007
Skąd: Górny Śląsk

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


Umieściłeś to
  1. <script type=text/javascript>
  2. alert('error');

i
to body onload... w głównym pliku?

W tamtym temacie bodajże revyag pisał, żebyś opakował skrypt, który teraz chcesz dołączać ajaxem w funkcji np.init()
To ja się teraz pytam po co Ci AJAX?!
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 18:27