Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [js, jquery] Przekazywanie zmiennej
Forum PHP.pl > Forum > Po stronie przeglądarki
MorF
Witajcie,
przeszukalem google ale jakos nie znalazlem odpowiedzi,
probuje swoich sil z jquery do uwtorzenia prostych dynamicznych datagrid'ow

mam funkcje
  1. function UpdateHist(strona)
  2. {
  3. $.ajax({
  4. type: "GET",
  5. url: 'include/parser.php',
  6. data: 's='+strona+'&r=10',
  7. dataType: "xml",
  8. success: function(xml){
  9. $('hist',xml).each(function(i){
  10.  
  11. zmienna+="<TR><TD>"+$(this).find('id_usera').text()+"</TD><TD>"+$(this).find('data').text()+"</TD><TD>"+$(this).find('czynnosc').text()+"</TD></TR>";
  12. });
  13. },
  14. error: function(){alert("Ajax error");}
  15.  
  16.  
  17. });
  18. return zmienna;
  19. }


sek w tym ze wartosc zmienna zwracana przez funkcje jest pusta.
Domyslam sie ze chodzi tutaj o jej zasieg.

jak rozwiazac ten problem?

Dziekuje za pomoc
lord_t
No to spróbuj na początku definicji funkcji dać var zmienna=""
MorF
no to zwraca mi nadal pusta ;/
a jak dalem
  1. var zmienna="test";

no to wypluwa test, jakby zupelnie nie modyfikowala
erix
Może spróbuj tak?
Kod
document.zmienna+="<TR><TD>"+$(this).find('id_usera').text()+"</TD><TD>"+$(this).find('data').text()+"</TD><TD>"+$(this).find('czynnosc').text()+"</TD></TR>";

//...

return document.zmienna;
MorF
teraz dalem cos takiego
  1. function UpdateHist(strona,sortowanie,kolejnosc)
  2. {
  3. zmienna="ta";
  4.  
  5. $.ajax({
  6. type: "GET",
  7. url: 'include/parser.php',
  8. data: 's='+strona+'&r=10&sort='+sortowanie+'&ord='+kolejnosc,
  9. dataType: "xml",
  10. success: function(xml)
  11. {
  12.  
  13. $('hist',xml).each(function(i)
  14. {
  15. document.zmienna="tutaj wartosc";
  16. }
  17. );
  18. },
  19. error: function(){alert("Ajax error");}
  20.  
  21.  
  22. });
  23.  
  24. alert (document.zmienna);
  25. return document.zmienna;
  26.  
  27. }


i za pierwszym wywolaniem funkcji jest niezdefiniowana tj "undefined" a potem juz wyskakuje dobrze "tutaj wartosc" , szczerze mowiac nie mam pojecia dlaczego, przeciez
  1. document.zmienna="tutaj wartosc";

jest wykonywane co najmniej kilkanascie razy ;/
lord_t
Moim zdaniem: najpierw jest undefinded ponieważ żądanie ajaxa jest domyślnie asynchroniczne ajax() sam w sobie skończy się szybciej niż przyjdzie odpowiedź i w związku z tym wykona się alert dla pustej zmiennej.

Czemu w ogóle chcesz zwracać tą zmienną? Nie możesz jej użyć w funkcji success?
MorF
Cytat(lord_t @ 2.03.2009, 09:53:06 ) *
Czemu w ogóle chcesz zwracać tą zmienną? Nie możesz jej użyć w funkcji success?


wiesz potrzebuje zwrocic jej wartosc zeby w innej funkcji wykonac z jquery $("#element").append(wartosc_zwrocona_przez_funkcje)
a nie moge tego odrazu umiescic w bloku success, bo bede ta tresc dolaczal do roznych elementow ;/
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.