Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript]Zasięg zmiennych w JS
Star
post 12.06.2016, 20:20:50
Post #1





Grupa: Zarejestrowani
Postów: 294
Pomógł: 34
Dołączył: 16.02.2015

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


Cześć

Może ktoś wytłumaczyć jak wygląda zasięg zmiennych utworzonych po zakończeniu połączenia ajaxowego?

Mamy taki kod :

  1.  
  2. $.ajax({
  3. url: "test.php",
  4. method: "POST",
  5. dataType: "json"
  6. }).done(function(json) {
  7. var text = json.text;
  8. });
  9.  
  10.  
  11. alert(text);


Dlaczego konsola wyświetla, że zmienna text jest niezdefiniowana?
Go to the top of the page
+Quote Post
LowiczakPL
post 12.06.2016, 20:26:11
Post #2





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

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


bo jest zadeklarowana lokalnie

  1. var text = '';
  2. $.ajax({
  3. url: "test.php",
  4. method: "POST",
  5. dataType: "json"
  6. }).done(function(json, text) {
  7. text = json.text;
  8. });
  9.  
  10.  
  11. alert(text);


Ten post edytował LowiczakPL 12.06.2016, 20:26:27


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
Star
post 12.06.2016, 20:39:28
Post #3





Grupa: Zarejestrowani
Postów: 294
Pomógł: 34
Dołączył: 16.02.2015

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


deklarowalem wczesniej zmienna text, Twoj przyklad niczego nie zmienil, dalej wyrzuca mi pustego alerta

"obszedlem" to tak:
  1. var AjaxGet = function () {
  2. var result =
  3. $.ajax({
  4. type: "POST",
  5. url: 'test.php',
  6. contentType: "application/json; charset=utf-8",
  7. dataType: "json",
  8. async: false
  9. }) .responseText ;
  10. return result;
  11. }


no i dziala, jednak chcialbym sie dowiedziec dlaczego nie lapie mi zmiennej z pierwszego postu
Go to the top of the page
+Quote Post
trueblue
post 12.06.2016, 21:35:47
Post #4





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Zmiennej nie łapie, bo jest zadeklarowana lokalnie.
Przykład, który podał LowiczakPL jest poprawny, tyle, że alert wykona się przed funkcją done, więc zmienna będzie pusta.

Ten post edytował trueblue 12.06.2016, 21:36:06


--------------------
Go to the top of the page
+Quote Post
Comandeer
post 13.06.2016, 14:29:58
Post #5





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

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


Polecam najpierw poczytać sobie o asynchroniczności: http://webroad.pl/javascript/746-synchroni...synchronicznosc

Jak ogarniesz koncept asynchroniczności, wówczas zrozumiesz dlaczego przypisywanie wartości zwrotnej z Ajaksa do zmiennej jest po prostu bezsensowne wink.gif


--------------------
Go to the top of the page
+Quote Post
Star
post 14.06.2016, 17:52:13
Post #6





Grupa: Zarejestrowani
Postów: 294
Pomógł: 34
Dołączył: 16.02.2015

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


Dobry artykuł, dzięki :-)
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: 19.07.2025 - 05:30