Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery] JSONP
Forum PHP.pl > Forum > XML, AJAX > AJAX
k3nsei
Mam taki kod (poniżej). Problem polega na tym że nie bodę się dobrać do zmiennych przypisywanych wewnątrz funkcji $.getJSON poza nią. Możecie podać jakąś propozycję jak to rozwiązać?
  1. <script type="text/javascript">
  2.  
  3. $(document).ready(function() {
  4.  
  5. mUrl = 'naruto';
  6. cUrl = '0';
  7.  
  8. var GetChaptersResponse = false;
  9.  
  10. $.getJSON('http://api.manga-lib.pl/api/reader_chapters/'+mUrl+'/json?jsoncallback=?', function(data) {
  11. var MangaUrl = data.seo;
  12. var MangaTitle = data.title;
  13. var Chapters = data.chapters;
  14. GetChaptersResponse = true;
  15. });
  16.  
  17. if(GetChaptersResponse) {
  18. alert(Chapters);
  19. }
  20. else{
  21. //alert('FALSE');
  22. }
  23.  
  24. });
  25. </script>
nospor
ajax wykonuje się asynchronicznie.
tak wiec kod:
if(GetChaptersResponse) {
alert(Chapters);
}
else{
//alert('FALSE');
}
wykona się wczesniej niz to co jest w getJSON.
k3nsei
Do tego sam doszedłem. Czy możecie podać mi jakaś propozycję jak to rozwiązać?
nospor
No a nie możesz w getJSON wywołac kodu co cię interesuje? Dlaczego musisz po?

Mozesz od biedy powiedzieć też by się ajax wykonał synchronicznie. Jest to jednak niezalecane, gdyż wówczas staje ci cała strona na czas tego ządania.
k3nsei
Bo strasznie zagęści mi się kod. Ale jak nie ma innego wyjścia to tak trzeba będzie zrobić.
nospor
Cytat
Bo strasznie zagęści mi się kod
Jak ci się coś zagęszcza, to uzywaj funkcji.

Cytat
Ale jak nie ma innego wyjścia to tak trzeba będzie zrobić.
Przeciez podałem ci inne wyjscie. Ino jest niezalecane smile.gif
arecki
Zadeklaruj var Chapters,MangaUrl,MangaTitle przed wywołaniem getJSON a w funkcji po prostu przypisz tez zmiennej wartość. Powinno zadziałać tak jak chcesz.
nospor
po co? Przeciez moze te parametry przekazać bezposrednio do funkcji
arecki
No może, ja tylko napisałem alternatywny dla Twojego sposób żeby miał w globalnych zmiennych to czego potrzebuje. Pomijam fakt że dane i tak tam się pojawią dopiero po wywołaniu getJSON ale co tam klient chce, klient ma smile.gif Ale żeby nie było, zgadzam się z Twoim rozwiązaniem że if(GetChaptersResponse) powinno się znaleźć w funkcji wywoływanej po getJSON.
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.