Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JQuery][Ajax] Wyciągnięcie wartości zmiennej poza funkcję
reyne
post 16.11.2012, 09:50:45
Post #1





Grupa: Zarejestrowani
Postów: 73
Pomógł: 1
Dołączył: 19.12.2007

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


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?

Ten post edytował reyne 16.11.2012, 10:16:51
Go to the top of the page
+Quote Post
Sephirus
post 16.11.2012, 10:20:27
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


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


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
reyne
post 16.11.2012, 10:31:31
Post #3





Grupa: Zarejestrowani
Postów: 73
Pomógł: 1
Dołączył: 19.12.2007

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


Skorzystałem z 1 opcji, działa dzięki wink.gif
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: 31.07.2025 - 09:54