• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wyciągnięcie zmiennej z funkcji ajax i zwrócenie przez funkcje nadrzędną

Object Storage Arubacloud
+1 głos
541 wizyt
pytanie zadane 21 sierpnia 2015 w JavaScript przez makoso Mądrala (7,380 p.)

Nie jestem pewien czy dobrze sformuowałem pytanie ale powiem tak złapałem się za js i chciałbym zacząć od razu robić dobrze ;) 
problem polega na tym chcyę wyciągnąć dane odkodowane z jonsona dane są zwrócone w jednej funkcji ale ja chcę je odebrac w nst funkcji kod poniżej wszystko powinien wyjaśnić.

 

nie wiem czy jakoś trzeba var id na global ustawić coś w tym stylu? w php takie rzeczy są prostsze :)
 

function GetStart() {
    $.ajax({
        type: "GET",
        url: "lib/id.php",
        contentType: "application/json; charset=utf-8",
        dataType: 'json',
        success: function (json) {
            for (var klucz in json) {
                var wiersz = json[klucz];
                var id = wiersz[0];
            }

        },

        error: function (blad) {
            console.log(blad);
        }
    });
    this.id=id;
}
function GetStarted(){
    var ing=new GetStart();
    var myid=ing.id;
    document.getElementById("id").innerHTML =myid;
}

 

1 odpowiedź

+1 głos
odpowiedź 21 sierpnia 2015 przez Comandeer Guru (601,110 p.)
Nie da rady, bo Ajaks jest asynchroniczny i nie zwraca wartości: http://webroad.pl/javascript/746-synchroniczna-asynchronicznosc
komentarz 22 sierpnia 2015 przez makoso Mądrala (7,380 p.)
kiedy ja potrzebuje o.O :) mam plan alternatywny, ale chciałem wszystko w js zamknąć -.- widzę lektura na dłużej :) dzięki jutro przeczytam może coś osiągnę :)
komentarz 22 sierpnia 2015 przez Comandeer Guru (601,110 p.)
No to zostaje Ci zabawa z promises, tudzież  z generatorem. Ale synchronicznego returna i tak nie uzyskasz.
komentarz 22 sierpnia 2015 przez makoso Mądrala (7,380 p.)
wiesz ja już szukałem rozwiązań typu zapisanie do konsoli i pobranie z konsoli :)
komentarz 29 lutego 2016 przez makoso Mądrala (7,380 p.)

Rozkopuję stare śmieci, nie ma sensu zakładać nowego wątku, wróciłem do js-a i zacząłem się zastanawiać w jaki sposób przekazywać dane z Ajax-a do innych funkcji, przyszło mi takie rozwiązanie i moje pytanie polega na tym abyś odpowiedział jak bardzo złe ono jest? 
PS. miałem wykonać je na klasie ale coś mi nie szło ;)

na dole tylko małe testy działania.
 

storageManager = {
    waiting : false,
    appStorage : {},
    toAppStorage : function(){
        Object.getOwnPropertyNames(localStorage).forEach(function(val, idx, array) {
            storageManager.appStorage[val] = localStorage.getItem(val);
        });
        localStorage.clear();
    },
    pushData:   function(dataKey,data) {
        storageManager.appStorage[dataKey] = data;
        localStorage.setItem(dataKey, data);
        storageManager.toAppStorage();
    },
    pushDataFromAjaxPost:   function(dataKey,url,parametrs) {
        request = $.ajax({
            url: url,
            method: "POST",
            data: parametrs
        });
        request.done(function( data ) {
           storageManager.pushData(dataKey, data);
        });
        storageManager.toAppStorage();
    }
};

storageManager.pushData('name','value');
storageManager.pushData('name1','value');
storageManager.pushData('name2','value');
storageManager.pushDataFromAjaxPost('test','/',{});

console.log(storageManager);
console.log(localStorage.length);
console.log(localStorage);

 

komentarz 29 lutego 2016 przez Comandeer Guru (601,110 p.)

A czemu po prostu nie obudujesz localStorage? Inna rzecz, że IMO w Twoim wypadku łatwiej będzie użyć bezpośrednio localStorage – po prostu.

komentarz 29 lutego 2016 przez makoso Mądrala (7,380 p.)
obudować masz na myśli coś w stylu:
localStorage.prototype.fromAjax = function(){};

?
teraz wiem że to tak wygląda ale planuję to trochę jeszcze rozbudować
komentarz 29 lutego 2016 przez Comandeer Guru (601,110 p.)

Ah, nie zauważyłem tej metody do obsługi Ajaksu…

Nie, nie rozszerza się prototypów natywnych. 

Ale np. pushData może spokojnie wyglądać tak:

pushData:   function(dataKey,data) {
        localStorage.setItem(dataKey, data);
}

 

Podobne pytania

0 głosów
1 odpowiedź 208 wizyt
pytanie zadane 2 grudnia 2017 w JavaScript przez UltraSF Stary wyjadacz (11,740 p.)
+1 głos
1 odpowiedź 236 wizyt
0 głosów
1 odpowiedź 303 wizyt
pytanie zadane 2 września 2018 w JavaScript przez Ventrae Nowicjusz (180 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...