Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [javascript][jquery] Zasięg zmiennych w kilku zagnieżdżonych funkcjach? :/, jak wydostac stamtad funkcje?
kukix
post 26.05.2013, 21:02:42
Post #1





Grupa: Zarejestrowani
Postów: 600
Pomógł: 2
Dołączył: 1.09.2002
Skąd: Wrocław

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


Witam.
Mam problem z wydostaniem pewnej zmiennej.

  1.  
  2. var decyzja;
  3. $.post("ajax_work.php",{action:"check", email: "ddd@sss.pl" }, function(data) {
  4. var odp=data.split('{ajax}'); //wyciagamy wartosc
  5.  
  6. if (odp[1] == 'nie_istnieje') { decyzja = 'ok'; } else { decyzja = 'nie'; }
  7. });
  8.  
  9.  
  10. if (decyzja == 'ok') { return true; } else { return false; } //tutaj zmianna decyzja nie dociera, ma wartośc undefined :/
  11.  


Problemem jest to, że zmienna "decyzja" nei wydostaje sięze środka kodu. Próbowałem na wszystkei sposoby i nic. Prosze o podpowiedź co z tym zrobić.

Ten post edytował kukix 26.05.2013, 21:05:39
Go to the top of the page
+Quote Post
com
post 26.05.2013, 21:49:10
Post #2





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


spróbuj bez var przy decyzja, wtedy będzie globalna wink.gif

Ten post edytował com 26.05.2013, 21:49:47
Go to the top of the page
+Quote Post
kamil4u
post 26.05.2013, 21:52:39
Post #3





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


Cytat
spróbuj bez var przy decyzja, wtedy będzie globlana wink.gif

Że co? Sprawdź informacje, które podajesz.

[edit]To trochę szeroki temat- jak chcesz opiszę go pokrótce [/edit]
@kukix: przygotuj demo . Sprawdź czy w ogóle wchodzisz w zdarzenie sucess przy post. Umieść więcej kodu.

Ten post edytował kamil4u 26.05.2013, 21:54:02


--------------------
Go to the top of the page
+Quote Post
com
post 26.05.2013, 22:00:26
Post #4





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


dobra nie zwróciłem uwagi że jest poza funkcja czyli jest globalna ale przy globalu nie musisz podawać var tongue.gif

Ten post edytował com 26.05.2013, 22:02:48
Go to the top of the page
+Quote Post
kamil4u
post 26.05.2013, 22:16:28
Post #5





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


Cytat
ale przy globalu nie musisz podawać var

Tak naprawdę musisz. Ale, że jak wiadomo HTML, CSS, JS itd. są idiotoodporne* to JS traktuje zmienną bez var jako globalną. Według dokumentacji jest to wymagane, a inna konstrukcja jest nieprawidłowa.

*Nie chcę nikogo obrazić. Tak po prostu jest. Broń Boże nie jest to skierowane do Ciebie. Jak masz jakieś doświadczenie to pewnie sam to doskonale wiesz.

Ten post edytował kamil4u 26.05.2013, 22:16:54


--------------------
Go to the top of the page
+Quote Post
kukix
post 26.05.2013, 22:25:16
Post #6





Grupa: Zarejestrowani
Postów: 600
Pomógł: 2
Dołączył: 1.09.2002
Skąd: Wrocław

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


Cytat(kamil4u @ 26.05.2013, 22:52:39 ) *
Że co? Sprawdź informacje, które podajesz.

[edit]To trochę szeroki temat- jak chcesz opiszę go pokrótce [/edit]
@kukix: przygotuj demo . Sprawdź czy w ogóle wchodzisz w zdarzenie sucess przy post. Umieść więcej kodu.


Poprawni wywołuje sięakcja jedna i druga,. wstawiałem tam alert pokazuje się to co trzeba. Problem tylko w tym, że dane nie przechodzą dalej.

Oto wiekszy kawałek kodu, cąła funkcja:


Kod
//ajax_work.php zwraca albo "nie_istnieje" albo pusty ciąg.


function sprawdz_email_czy_istnieje(value) {

      $.post("ajax_work.php",{action:"check_email", email: value }, function(data) {

        if (data == 'nie_istnieje') { var decyzja = 'ok'; } else { var decyzja = 'nie'; }
      });      


    if (decyzja == 'ok') { return true; } else { return false; }

}


PRÓBOWAŁEM TEŻ TAK:


Kod
//ajax_work.php zwraca albo "nie_istnieje" albo pusty ciąg.


function sprawdz_email_czy_istnieje(value) {

      $.post("ajax_work.php",{action:"check_email", email: value }, function(data) {

        if (data == 'nie_istnieje') { return true; } else { return false; }
      });      


}


Ale to również nie dziąła jak trzeba.

Go to the top of the page
+Quote Post
kamil4u
post 26.05.2013, 22:33:34
Post #7





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


Inny kod pokazujesz w pierwszym poście inny w drugim...


Kod
//ajax_work.php zwraca albo "nie_istnieje" albo pusty ciąg.


function sprawdz_email_czy_istnieje(value) {

      $.post("ajax_work.php",{action:"check_email", email: value }, function(data) {

        if (data == 'nie_istnieje') { var decyzja = 'ok'; } else { var decyzja = 'nie'; }
      });      


    if (decyzja == 'ok') { return true; } else { return false; }

}


-->

Kod
//ajax_work.php zwraca albo "nie_istnieje" albo pusty ciąg.


function sprawdz_email_czy_istnieje(value) {
       var decyzja;
      $.post("ajax_work.php",{action:"check_email", email: value }, function(data) {

        if (data == 'nie_istnieje') { decyzja = 'ok'; } else { decyzja = 'nie'; }
      });      


    if (decyzja == 'ok') { return true; } else { return false; }

}


Polecam operować na liczbach całkowitych, bądź wartościach logicznych, a nie na stringach( tekstach ) - przy przekazywaniu jakiś informacji


--------------------
Go to the top of the page
+Quote Post
com
post 26.05.2013, 22:43:52
Post #8





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


mam wrażenie że próbujesz uzyskać coś co już zostało napisane http://api.jquery.com/jQuery.post/ wink.gif

.done()
.fail()

o to chyba chodziło wink.gif

a co do tego var przed globalem to właśnie na odwrót aż zajrzałem do specyfikacji:
Cytat
Użycie var poza funkcją jest opcjonalne; przypisanie wartości do niezadeklarowanej zmiennej domyślnie deklaruje ją jako zmienna globalną.

Chociaż zalecają użycie tam również z jednego względu, żeby się nie pogubić wink.gif

Ten post edytował com 26.05.2013, 22:44:14
Go to the top of the page
+Quote Post
kamil4u
post 26.05.2013, 22:51:09
Post #9





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


@com:
Masz rację - przepraszam. A byłem pewien, że jak kilka lat temu patrzyłem to było inaczej... może sklerozę już mam smile.gif

Różnica mimo wszystko jest: https://developer.mozilla.org/en-US/docs/Ja.../Statements/var - niewielka, ale zawsze


--edit--
Ciekawostka: https://developer.mozilla.org/en-US/docs/Ja.../Statements/let - nigdy o tym nie słyszałem

Ten post edytował kamil4u 26.05.2013, 22:52:55


--------------------
Go to the top of the page
+Quote Post
com
post 26.05.2013, 23:00:13
Post #10





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


no wiesz to wszytko zależy z jakiego źródła korzystamy, ale z tego by wynikało że tak jest od wersji 1.0 biggrin.gif ale czasem rożne źródła rożnie piszą nie zawsze zgodnie z prawdą... przyznam się, że tez pierwszy raz słyszę o let, ale to wprowadzili dopiero w wersji 1,7 a aż tak bardzo nie śledziłem tych dokonań biggrin.gif
Go to the top of the page
+Quote Post
kukix
post 28.05.2013, 11:10:10
Post #11





Grupa: Zarejestrowani
Postów: 600
Pomógł: 2
Dołączył: 1.09.2002
Skąd: Wrocław

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


Cytat(com @ 26.05.2013, 23:43:52 ) *
mam wrażenie że próbujesz uzyskać coś co już zostało napisane http://api.jquery.com/jQuery.post/ wink.gif

.done()
.fail()

o to chyba chodziło wink.gif

a co do tego var przed globalem to właśnie na odwrót aż zajrzałem do specyfikacji:

Chociaż zalecają użycie tam również z jednego względu, żeby się nie pogubić wink.gif


tego niebardzo mogę zastosowac, ponieważ skrypt zawsze wykonuje się poprawnie.
Go to the top of the page
+Quote Post
kamil4u
post 28.05.2013, 13:25:28
Post #12





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


A czemu nie ustosunkowałeś się do mojego kodu / postu?


--------------------
Go to the top of the page
+Quote Post
kukix
post 28.05.2013, 14:51:42
Post #13





Grupa: Zarejestrowani
Postów: 600
Pomógł: 2
Dołączył: 1.09.2002
Skąd: Wrocław

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


ZROBIONE biggrin.gif


Kod
function sprawdz_email_czy_istnieje(value, opcja_rejestracji_value) {

  var data = $.ajax({
      type: 'POST',  
      url: 'ajax_work.php',
      data: {action:"check_email", email: value },
      async: false
     }).responseText;

  var odp=data.split('{ajax}');

  if (odp[1] == 'nie_istnieje') { return true; } else { return false; }

}
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: 26.06.2025 - 09:08