Funktion aus Funktion?
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
anonyme funktion
code
erfolg
file
freude
funktion
hinsicht
http
login
machen
meldung
nachricht
nachteil
status
url
variable aufrufen
variablen speichern
verbindung
wissen
zusammenhang
-
Hallo,
auf meiner Homepage arbeite ich mit AJAX und habe einen AJAX-Login & Logout, hatte noch andere Dinge vor mit AJAX. Der ganze AJAX-Vorgang ist ja schon etwas mehr Zeilen Code und jetzt möchte ich für jede AJAX-Verwendung die bei erfolgreichem Request unterschiedlich endet (mal Alertbox, oder Seite refreshen) nicht immer einen neuen AJAX Request schreiben. Ich wollte die Funktion ändern die nach:
aufgerufen wird.if (xmlrequest.status == 200) {
Bis jetzt habe ich an folgendes gedacht:
function login () { var function_after = 'alert("Alertbox");'; ajax('login.php', function_after); } function ajax(file, function_after) { [...] if (xmlrequest.status == 200) { eval(function_after); } [...]
Das klappt auch wunderbar, nur der Nachteil ist, dass ich dann die Funktion in eine Variable speichern muss. Bei etwas längeren Funktionen ist es ziemlich umständlich. Gibt es Alternativen?
Beitrag zuletzt geändert: 25.5.2011 1:58:53 von ksb -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich würde dir in diesem Zusammenhang ein JavaScript-Framework wie jQuery empfehlen. Das erspart eine Menge Schreibarbeit! Der folgende Link führt zur Übersicht aller Ajax-Funktionen, die jQuery bereitstellt: jQuery Ajax.
-
Wagnerm hat in dieser Hinsicht Recht.
Wenn du nicht richtig mit Ajax zurecht kommst,
dann solltest du auf jeden Fall mit jQuery arbeiten.
Wie schon gesagt wurde erspart es dir Arbeit und ist wesentlich einfacher und komfortabler. -
Ich dachte schon daran, aber dann habe ich mir es immer wieder umüberlegt.
Und das was ich suche gibt es da ja schon und zwar: .ajaxComplete()
Aber ist jQuery nicht etwas unprofessionell (nicht, dass ich ein Profi bin, sondern ich wollte gerne alles selber machen)? Und nicht dass ich mit AJAX nicht klar komme, sondern ich wollte nur wissen wie man diese .ajaxComplete()-Funktion ohne jQuery macht.
Beitrag zuletzt geändert: 25.5.2011 22:23:30 von ksb -
Hallo ksb,
also was ganz wichtig zu wissen ist: JavaScript ist eine funktionale Programmiersprache. Das heißt, dass du auch Funktionen in Variablen speichern kannst. Das bedeutet, dass du dir das eval() sparen kannst und eine Funktion direkt über eine Variable aufrufen kannst:
function ajax(file, function_after) { [...] if (xmlrequest.status == 200) { function_after(); }
Damit ist das ganze doch gleich viel schöner :)
Um jetzt dein obrigen Aufruf durchzuführen, legst du eine anonyme Funktion an (also eine Funktion ohne Namen) und übergibst sie direkt an deine Ajax-Funktion.
ajax( 'login.php', function() {alert( "Alertbox" ); } );
Wobei du natürlich nicht nur anoyme Funktionen als Parameter venwenden musst. Du kannst auch stinknormale Funktionen verwenden:
function meldung() { alert( "Verbindung hat geklappt!" ); } ajax( 'bla.php', meldung );
Und was in diesem Zusammenhang auch sehr praktisch ist, sind Closures und Funktionsfabriken
function meldungsFabrik( nachricht ) { return function () { alert( nachricht ); } } erfolg = meldungsFabrik( "Eine Verbindung konnte hergestellt werden! "); freude = meldungsFabrik( "Da ist was angekommen! Juhuu!" ); ajax( 'blubb.php', erfolg ); ajax( 'quark.php', freude );
Bezüglich Jquery: Ist eine nette JavaScript-Library. Und auf jeden Fall nicht unprofessionell. Aber natürlich muss man sowas nicht benutzen.
Beitrag zuletzt geändert: 25.5.2011 22:56:29 von bladehunter -
Danke, funktioniert perfekt, genau das was ich gesucht hab. :)
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage