jquery $.get() responseText in globale variable schreiben

Abro

Mitglied
Einen Wunderschönen guten Tag euch!

Es hat mich Überwindung gekostet hier zu schreiben, denn normalerweise löse ich meine Probleme lieber selbst. Ich arbeite erst seit kurzem mit jQuery und nach endlosen Google-Orgien sehe ich mich jetzt stecken geblieben.

Das Problem:
Ich sage einem PHP-Script, es soll mir aus MySQL eine ID für einen neuen Datensatz besorgen.
Diese soll dann einfach in der entsprechenden Variable gespeichert werden, zur weiteren Verwendung.

Meine Ansätze waren manigfaltig, ich bekomme aber immer nur leere Strings (u.ä.) wenn ich die ID eine Ebene höher transportieren möchte. FireBug sagt aber der responseText ist korrekt. (Also z.B. 123)

Ich dachte an etwas wie:
Code:
var id=0;
$.get('script.php',{'getid':'true'},function(data){id=data;}); //data:123
alert(id); //id:0

oder
Code:
id=$.get('script.php',{'getid':'true'}).responseText;
alert(id); //id:""

Da bin ich mal auf die Antworten gespannt und hoffe das Framework mal langsam zu begreifen o.Ô
 
Hi,

die get-Methode ist eine vereinfachte AJAX-Funktionalität, die asynchron abläuft. Soll heissen, dass das Script weiterläuft, ohne auf die Antwort zu warten. Damit ist die Variable id innerhalb des alert-Aufrufs noch nicht gesetzt, da die Antwort des Ajax-Requests noch nicht eingetroffen ist.

Abhilfe schaffst du, indem du zum Beispiel die ajax-Methode mit der Option async: false verwendest.
Code:
$.ajax({
  type: "GET",
  async: false,
  url: "script.php",
  data: "getid=true",
  success: function(data){
    id=data;
  }
});

alert(id);
Vielleicht hilft dir das weiter.

Ciao
Quaese
 
Ui ich danke dir!
Es funktioniert tatsächlich und du hast mir den Podex und den Tag gerettet.
Die Denkweise muss man sich auch erst einmal aneignen.

>> Ein Hoch auf tutorials.de !! <<


Jetzt hoff ich nur noch dass FireBug bald wieder gepatcht wird, weil der immer meinen ganzen Browser Freezed >.<
 

Neue Beiträge

Zurück