Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [jquery] zmienne globalne
MadMark
post
Post #1





Grupa: Zarejestrowani
Postów: 105
Pomógł: 3
Dołączył: 12.07.2010

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


Witam, mam problem ze zmiennymi (globalne i lokalne) a mianowicie:
  1. var a = '';
  2. $(document).ready(function(){
  3. $.ajax({
  4. type: "POST",
  5. url: "./login.php",
  6. data: "em1=itwork",
  7. success: function(msg){
  8. a = msg;
  9. }
  10. });
  11. alert(a);
  12. //...

Czyli po kolei, inicjuję zmienną -> wykonuje działanie w pliku php, dostaje zwrot -> przypisuję i... tu jest problem...
Jak wyświetlę po przypisaniu "a" to ma wartość, ale w alercie już nie ma wartości.

Jak to poprawić? Tzn jak edytować w ajaxie zmienną globalną?
Kombinowałem z tym ale nie znam się na tyle, aby samemu dać radę.
Z góry dziękuję za pomoc (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
zegarek84
post
Post #2





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


chyba jest dobrze... ustaw dłuuugi timeout na tego alerta - odpowiedź z ajax'a zawsze będziesz miał później - dlatego stosuje się callbacki (chyba, że zastosujesz ajax synchroniczny)... czyli tego alerta wywołaj tak: setTimeout(function(){alert(a);},4000);

lub jeśli chciałeś daną akcję inicjalizować po otrzymaniu odpowiedzi z ajax'a to musisz inicjować to w callbacku - o setTimeout wspomniałem tylko dla powyższego przykładu cobyś sobie sprawdził...

przy czym zaznaczę, że jeśli na niższym scope zadeklarujesz znowu tą zmienną poprzedzając przez var lub w definicji funkcji to to już będzie jakby zmienna lokalna ale też globalna w kontekście tej funkcji w głąb dla innych funkcji - sorki - dziwnie to zabrzmiało ;]

Ten post edytował zegarek84 5.06.2011, 13:00:46
Go to the top of the page
+Quote Post
smentek
post
Post #3





Grupa: Zarejestrowani
Postów: 130
Pomógł: 11
Dołączył: 7.04.2003

Ostrzeżenie: (10%)
X----


"jak edytować w ajaxie zmienną globalną?" - zmienne globalne są zle. Nizej masz 'object literal' napisany 'z palca' rozkmiń jak to dziala i staraj sie kodowac w tym stylu.


  1.  
  2. $(document).ready(function(){
  3.  
  4. var someObject = {
  5.  
  6. alertPopup: function( zzz ){
  7. alert( zzz )
  8. },
  9.  
  10. ajaxOperation: function( dddd ){
  11. var that = this;
  12.  
  13. $.ajax({
  14. type: "POST",
  15. url: "./login.php",
  16. data: {em1: dddd},
  17. success: function(msg){
  18. that.alertPopup(msg);
  19. }
  20. });
  21. },
  22.  
  23. start: function( x ){
  24. this.ajaxOperation( x );
  25. }
  26. };
  27.  
  28. someObject.start( 'itwork' );
  29.  
  30.  
  31. });


Ten post edytował smentek 5.06.2011, 19:13:05
Go to the top of the page
+Quote Post
MadMark
post
Post #4





Grupa: Zarejestrowani
Postów: 105
Pomógł: 3
Dołączył: 12.07.2010

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


nic z tego nie działa...
Zrobiłem tak:

function ax(method, file, data){
var t = $.ajax({
type:method,
url: file,
data: data,
async: false
}).responseText;
return t;
}

i używanie tej funkcji gwarantuje mi przypisanie do zmiennej globalnej danych uzyskanych przez ajax.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.08.2025 - 15:34