Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z przekazaniem danych do zmiennej globalnej
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
adamski9000
Witam

Natknalem sie na pewien problem, ktorego nie moge przeskoczyc. Mianowicie, nie przekazuje mi wartosci z funkcji do zmiennej globalnej. A dokładnie nie chce mi przekazac zmiennej z funkcji 'pobrane_dane_z_db' do funkcji 'wyswietl_wspolrzedne'.Doprawdy nie wiem jak to rozwiazac. Gdzieś musi być mój błąd logiczny, ale nie wiem gdzie. Prosze o sugestie.

  1. var wspolrzedne_punktow = [];
  2.  
  3. $(document).ready(function (){
  4.  
  5. $.getJSON( 'inc/cls_pobierz_dane_z_db.php?jsoncallback=?',pobrane_dane_z_db);
  6. wyswietl_wspolrzedne();
  7.  
  8.  
  9. function pobrane_dane_z_db(dane)
  10. {
  11. $.each(dane, function(i,item){
  12. wspolrzedne_punktow[i] = new Array( item.wspolrzedne_dlugosc, item.wspolrzedne_szerokosc );
  13. });
  14.  
  15. }
  16.  
  17. function wyswietl_wspolrzedne()
  18. {
  19. $('<p>').text( wspolrzedne_punktow.lenght ).appendTo('#test');
  20. }
  21. });
mccd

  1. $('p').text( wspolrzedne_punktow.lenght ).appendTo('#test');


Niktoś
W ogóle jakoś to źle skonstruowane,powinno być mniej więcej:
Cytat
var wspolrzedne_punktow = [];

$(document).ready(function (){

$.getJSON( 'inc/cls_pobierz_dane_z_db.php?jsoncallback=?',pobrane_dane_z_db(jakis_parametr));
wyswietl_wspolrzedne();


function pobrane_dane_z_db(var dane)
{
$.each(dane, function(i,item){
wspolrzedne_punktow[i] = new Array( item.wspolrzedne_dlugosc, item.wspolrzedne_szerokosc );
});

return jakis_wynik;
}

function wyswietl_wspolrzedne()
{
$('<p>').text( wspolrzedne_punktow.lenght ).appendTo('#test');
}
});
adamski9000
Dzięki za pomoc. Jednak koledzy chyba nie zwrócili uwagi, iż skrypt wykorzystuje JQuery. Dlatego zaproponowana zmiany nie dosyć ze nie pomogły, to jeszcze wysypały cały skrypt smile.gif

('p') nie może być zastosowane. Musi być ('<p>') gdyż nawiasy klamrowe określają znacznik.

ZAstosowanie propozycje od Niktośia tez nie wchodzą w grę, gdyż funkcja getJson przekazuje parametr niejawnie.

Doprawdy nie wiem w czym problem.
mortus
Funkcja wyswietl_wspolrzedne wywoływana jest zanim dane zostaną pobrane. Wynika to z "natury" JavaScriptu. Trzeba zatem uruchomić funkcję wyswietl_wspolrzedne w odpowiednim momencie, czyli wewnątrz funkcji będącej callback-iem jQuery-owej metody .getJSON (czyli funkcji pobrane_dane_z_db), albo też uczynić funkcję wyswietl_wspolrzedne callback-iem funkcji pobrane_dane_z_db (co w sumie sprowadza się do tego samego). Szukaj pod hasłem callback.
adamski9000

Masakra. Ale się nameczylem z tym callbackiem. Funkcja getJson jest asynchroniczna i nie mozna zwrocic danych za pomoca zwyklego return. Dlatego trzeba zwracac dane za pomoca callback.
Dzieki i pozdrawiam
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.