Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JQuery][Ajax] Wyciągnięcie wartości zmiennej poza funkcję
Forum PHP.pl > Forum > Po stronie przeglądarki
reyne
Witam smile.gif,

posiadam kod JavaScript Jquery:
- kod ładuje zawartość pliku loadFlag.php, w tym wypadku zawiera on wartość sesji;
  1. var chk;
  2. function checkFlag() {
  3. $.ajax({
  4. type: "GET",
  5. url: "data/loadFlag.php",
  6. data: { flag_show: 1 },
  7. success: function(data){
  8. chk = html(data);
  9. }
  10.  
  11. });
  12. return chk;
  13. }
  14. var wynik = checkFlag();
  15. alert(wynik)
  16.  


oraz plik PHP (loadFlag.php):
-plik wyświetla zawartość sesji o nazwie flag
  1. <?php
  2.  
  3. require_once '../core/functions.core.php'; // plik z roznymi funkcjami
  4.  
  5. if($_GET['flag_show'] == "1") {
  6.  
  7. echo $_SESSION['flag'];
  8.  
  9. }
  10.  
  11. ?>


Chciałbym wydostać wynik zapytania z funkcji checkFlag() poza obszar funkcji, niestety zmienna wynik zwraca wartość undefined, jak zrobić to poprawnie?
Sephirus
AJAX jest wykonywany asynchronicznie w Twoim przypadku co oznacza, że wynik funkcji w "success" nie jest przekazany od razu a dopiero po otrzymaniu odpowiedzi z serwera. Opcje są dwie. Albo zmień tryb AJAX na synchroniczny i powinno działać albo wykorzystaj funkcję w "success" i w niej obrób te dane które dostajesz.

Opcja 1:

[JAVASCRIPT] pobierz, plaintext
  1. var chk;
  2. function checkFlag() {
  3. $.ajax({
  4. type: "GET",
  5. url: "data/loadFlag.php",
  6. async: false, // tu zmieniamy żeby działało w trybie synchronicznym
  7. data: { flag_show: 1 },
  8. success: function(data){
  9. chk = html(data);
  10. }
  11.  
  12. });
  13. return chk;
  14. }
  15. var wynik = checkFlag();
  16. alert(wynik)
[JAVASCRIPT] pobierz, plaintext


Opcja 2:

[JAVASCRIPT] pobierz, plaintext
  1. function checkFlag() {
  2. $.ajax({
  3. type: "GET",
  4. url: "data/loadFlag.php",
  5. data: { flag_show: 1 },
  6. success: function(data){
  7. alert(html(data));
  8. }
  9.  
  10. });
  11. }
  12. checkFlag();
[JAVASCRIPT] pobierz, plaintext
reyne
Skorzystałem z 1 opcji, działa dzięki wink.gif
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.