• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

globale variable bei jquery ajax aufruf

musclebreast

Mitglied
Hallo,

ich habe ein kleines problem. und zwar habe ich eine globale variable und rufe dann mit ajax eine andere seite auf:

Code:
var test="globale vaiable";
jQuery.ajax({
                                    url: customViewUrl,
                 async: false,
                                    success: function(data) {


                alert(data);
               
                        }

            });

alert(test);



mein problem ist, dass es die variable undefined ist nach dem ajax aufruf...wie kann ich werde auch nach dem ajax aufruf noch verfügbar machen?

VG,

Lara
 
Werbung:
Erstmal empfehle ich dir Google Chrome oder FireFox zu benutzen um dein JavaScript zu testen. (Wenn du dich für den FireFox entschieden hast brauchst du noch das Plugin "FireBug")

In den Browsern drückst du F12. In dem kleinen Fenster das sich nun öffnet gehst du auf den Tab "Konsole". Dann öffnest du deine Seite.

Alle deine Alerts ersetzt du bitte durch "console.log".

Jetzt wo du eine anständige Testumgebung hast baust du in deinen Callback noch ein console.log(test); um zu gucken ob die variable an dem Punkt noch in ordnung ist.
Nun benennst du die Variable erst einmal in etwas anständiges um was du später auch verwenden willst. (etwas anständiges ist z.b. schon "asdasd" hauptsache nicht "test" da die chancen zu hoch sind, je nachdem was für librarys du verwendest, dass die variable anderweitig überschrieben wird)

Und wenn das alles nichts hilft gibst du uns bitte einen Link zu deiner Seite oder postest mehr Code. :)

lg
 
Hi,

danke für deine Hilfe. Normalerweise arbeite ich auch mit dem firebug. Diesmal geht es nicht da ich in der Entwicklungsumgebung nichts installieren darf. Es handelt sich um eine Entwicklung im Intranet.

Vorab eine kurze Frage. Sobald der ajax aufruf synchron ist gehen alle variablen werte verloren. Das scheint so zu sein. kann man denn bei ajax aufruf variablenwerte übergeben und anschliessend wieder zurückgeben so dass sie im aufrufenden Script verfügbar sind?

LG,

Lara
 
Werbung:
Es ist ganz einfach, das Verhalten, dass du beschreibst, darf nicht auftreten und somit wird wir wohl kaum jemand helfen können.

Wenn du etwas Entwickeln sollst und du aber nichts installieren darfst MUSST du mit jemandem reden der diese Sperren für dich aufheben kann, damit du deine Arbeit ordentlich erledigen kannst.
 
Ein synchroner Ajax-Call ist ein Seitenrefresh, dabei gehen temporär belegte Variablen natürlich verloren.

Also entweder asynchron, oder die Werte per Cookie/Session bzw. durch Übergabe an eine Datenbank speichern. Zum transportieren von Daten mit $.ajax() gibt es den data Handler. Steht alles in der Doku.
 
Wow, ich hatte ja keine Ahnung. Ich finde leider nichts dazu im internet. Nach durchlesen der jQuery lib macht es auch nicht mehr sinn. Weißt du evtl. warum Tronjer?
 
Werbung:
Ich verstehe nur nicht warum der gesammte Context erneuert wird. Die Seite wird offensichtlich nicht neu geladen und trotzdem sind die globalen variablen nicht mehr vorhanden.
 
Ich habe jetzt keine Lust, ein längeres Beispiel zu schreiben, aber du kannst das doch auch selber debuggen.

Erstelle ein Script, das eine JS-Variable enthält und beim Klick auf den Button einen einfachen Ajax-Request sendet. In der Ajax-Funktion sollte lediglich die URL angegeben werden und vielleicht noch ein Success-Handler mit console.log(). Du wirst sehen, dass die Variable danach immer noch existiert.
 
Werbung:
So... halt alles auf anfang. Habe mein Test script gerade noch einmal durchlaufen lassen und es funktioniert alles wie erwartet. Nach einem Synchronen call sollte alles noch genau so sein wie vorher.
Ich war von diesem Satz so verwirrt.

Ein synchroner Ajax-Call ist ein Seitenrefresh, dabei gehen temporär belegte Variablen natürlich verloren.

aber keine ahnung was du uns damit sagen willst.

Fakt ist, dass eine globale variable nach dem aufruf eines synchronen requests immer noch vorhanden sein sollte. Hier mein test code der genau das erwartete verhalten zeigt.

Code:
var asdasd = 'test';
var r = new XMLHttpRequest();
r.open('GET', '/', false);
r.send(null);
console.log(asdasd);

ich revidiere alles was ich bis jetzt gesagt habe außer folgendes

Es ist ganz einfach, das Verhalten, dass du beschreibst, darf nicht auftreten und somit wird wir wohl kaum jemand helfen können.
Wenn du etwas Entwickeln sollst und du aber nichts installieren darfst MUSST du mit jemandem reden der diese Sperren für dich aufheben kann, damit du deine Arbeit ordentlich erledigen kannst.

und das was der Tronjer gesagt hat macht absolut keinen sinn bis er sich hier genauer erklärt :-D :)
 
Ich korrigiere mich an dieser Stelle. So, wie ich es geschrieben hatte, war es natürlich missdeutend. Bei einem synchronen Request muss das Script auf die Antwort des Servers warten, was sich wie ein Seitenreload anfühlen kann. Die temporäre Variablenbelegung würde natürlich nur bei einem echten Reload verloren gehen.

Aber warum willst du eigentlich einen synchronen Request senden?
 
Zurück
Oben