Dynamisch abgefragte Daten Global zur Verfügung stellen

JesusFreak777

Erfahrenes Mitglied
huhu,
mit
Code:
$.post('script.php', data, function(data) {
 console.log( data )
}, 'json');
kann ich mir sehr einfach daten von einer externen quelle holen (ich nutze diese funktion um mir ein jsonarray phpgeneriert zu holen).
die zurückgegebenen Daten kann ich dann innerhalb von meiner $.post funktion weiterverarbeiten...
kann ich diese daten aber auch irgendwie global zur verfügung stellen? <- dies würde einiges einfacher machen.
Code:
$.post('script.php', data, function(data) {
externedaten = data
}, 'json');
 console.log( externedaten )
Vielen Dank für alle Informationen
 
Hallo,

dies würde einiges einfacher machen
Und deinen Code unglaublich unsauber machen.

Aufgrund der asnychronen Natur von AJAX-Abfragen kann dein zweiter Code (der bereits globale Variablen benutzt - zumindest, wenn du nicht "use strict" nutzt) sowieso nicht funktionieren.

Was spricht dagegen, Code in die Callback-Funktion (wie in deinem ersten Code) zu packen?
 
evtl. hab ich noch nicht lange darüber nachgedacht, aber gerade komm ich zu keiner vernünftigen lösung wie ich dann mehrere / viele abfragen nutzen kann ->
Code:
abfrage1 { ergebnis1 }
abfrage2 { ergebnis2 }
mach was aus ergebnis1 & ergebnis2
klar ist es mein Ziel sauber zu arbeiten und ich will auch nicht den code "Verpfuschen"!
daher such ich auch nach ner Lösung die in ein "sauberes" Konzept passt. Trotzdem soll es "umsetzbar" sein.
=> ich will abfragen einzeln triggern können, das heißt ich nutz zuerst ergebnis2 beim laden der seite und dann nutz ich ergebnis2Neu bei irgendeiner Aktion!
 
Zuletzt bearbeitet von einem Moderator:
Kennst du Promises? Die wären perfekt für deinen Anwendungsfall.

Ein kleines Beispiel (live zu testen auf jsFiddle)
Javascript:
function getResult1() {
    return $.getJSON("/echo/json").then(function (data) {
        return "This is result 1!";
    });
}

function getResult2() {
    return $.getJSON("/echo/json").then(function (data) {
        return "This is result 2!";
    });
}

$.when(getResult1(), getResult2()).done(function (msg1, msg2) {
    alert(msg1 + "\n" + msg2);
});
 

Neue Beiträge

Zurück