Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [javascript] Zasięgi zmiennych
sunneku
post 26.07.2011, 12:03:27
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 29.05.2008

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


Witam

Mam problem. Piszę mianowicie skrypt javascript.
Mam w nim między innymi

  1. var wordsSearch = new Array();
  2.  
  3. var api = ( {
  4. getWords : function() {
  5. WebApi.managerCallback(this.WebApiUrl,'getWords','');}
  6. });
  7.  
  8. var WebApi = ( {
  9.  
  10. managerCallback : function(_host,_method,_param) {
  11. var script = document.createElement('script');
  12. script.type = 'text/javascript';
  13. script.src = _host + '?callback=WebApi.' + _method + _param;
  14. $('body').append(script);
  15. },
  16.  
  17. getWords : function(_data) {
  18. if (_data.error != 0) {
  19. console.log("error!");
  20. return;
  21. }
  22.  
  23. for (key in _data.result) {
  24. console.log(key +'=='+_data.result[key]);
  25. wordsSearch[key] = _data.result[key];
  26. }
  27.  
  28. }
  29. });


Alert i firebug potwierdza że otrzymuje dane poprawne i że są one wpisywane do wordsSearch[key]

W dalszej części skryptu mam coś takiego:
  1. $(document).ready(function() {
  2. api.getWords(); //firebug dobrze odnotowuje pobrane słowa
  3. alert(wordsSearch[0]); //undefined
  4. })


Ale sam alert jest undefined. Jak tutaj skorygować sprawę?
Wg mnie wordsSearch jest zmienną globalną, inicjujemy jako pustą tablicę. W wyniku wywołania api.getWords wywołuję WebApi.getWords i modyfikuję w tej funkcji zmienną wordsSearch. Ale modyfikuję to jakby w sposób lokalny a nie w sposób globalny.

Proszę o pomoc. Za wszelką pomoc z góry dziekuję.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
nospor
post 26.07.2011, 12:06:26
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




alert(wordsSearch[0]);
wykonuje ci się zanim jeszcze wykona sie getWords()


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sunneku
post 26.07.2011, 12:14:03
Post #3





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 29.05.2008

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


Kurczę. Sądziłem że idzie o zasięgi zmiennych. Dziękuję bardzo. Faktycznie, nie pomyślałem. Zupełnie nie w tym co trzeba kierunku patrzyłem

Póki co użyłem:
setTimeout("alert(wordsSearch[0])",1250);

Pytanie czy jest jakaś funkcja w stylu "wywołaj funkcję po skończeniu funkcji"? (chodzi o to że nie chce dawać delay czy timeout)
Go to the top of the page
+Quote Post
peter13135
post 26.07.2011, 12:17:37
Post #4





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


no to robisz jedną funkcję za drugą.
funkcja1(); funkcja2()
i wykonują się kolejno


--------------------
:)
Go to the top of the page
+Quote Post
nospor
post 26.07.2011, 12:20:18
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@peter13135 przeczytaj wątek jeszcze raz

@sunneku Twoim callbackiem jest właśnie getWords()


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sunneku
post 26.07.2011, 12:25:04
Post #6





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 29.05.2008

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


Ok, widać że już nie myślę. Już wszystko jasnę. Dzięki bardzo
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 23:31