44 Stimmen

jQuery: Response von Post oder Get in eine globale Variable schreiben

Frage von Progger99 | Letztes Update am 02.11.2021 | Erstellt am 11.09.2011

Ich hole möchte mir mit einer Funktion in jQuery einige neue Daten nachladen, die dann an einer anderen Stelle in meinem globalen Skript weiterverarbeitet werden sollen. So weit so gut:

var nr = 0;

$.get("meinscript.php", {id: id}, function(response){
   nr = response;
});

alert(nr); // immer noch 0!!!

Das Problem ist dabei folgendes: Egal auf was ich die Variable 'nr' innerhalb der Nachlade-Funktion setze, es wird immer am Ende 0 ausgegeben! Auch wenn ich per Hand nr auf etwa anderes in der Funktion setze oder statt GET POST verwende, funktioniert es nicht.

Hat jemand eine Lösung für dieses Problem?

AntwortenPositivNegativ
3Beste Antwort3 Stimmen

Um diesen Vorgang zu verstehen, musst du wissen, dass die jQuery Funktionen .post() und .get() beide asynchron ausgeführt werden.

Das bedeutet folgendes: Das Script wartet bei dem Ausführen von .post() oder .get() nicht eine Antwort ab sondern wird einfach sofort weiter ausgeführt. Bevor also deine Variable auf einen anderen Wert gesetzt werden kann (das Laden des Scripts dauert schließlich etwas), wird sie schon ausgegeben und hat daher immer noch den Anfangswert.

Wenn man sich bewusst ist, dass .post() und .get() Vereinfachungen der .ajax() Funktion sind, kann man zum Beispiel die .ajax() Funktion verwenden und dabei angeben, dass die Funkion nicht asynchron (async:false) ausgeführt werden soll:

var nr = 0;

$.ajax({
   type: "GET",
   url: "meinscript.php",
   async: false,
   data: {id:id},
   success: function(response) { nr = response; }
});

alert(nr);

Damit sollte es funktionieren, jetzt sollte darauf gewartet werden, bis der Wert angekommen ist.
Letztes Update am 02.11.2021 | Erstellt am 13.09.2011

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.