Callback Funktion bauen
Jens
- javascript
Hallo,
wie man schon am Betreff erkennen kann veruche in eine Callback Funktion selbst zu schreiben.
Ausgangssituation ist das gerade mit AJAX rum spiele. Ich sende also meine Anfrage an ein PHP Script und das liefert mir im Grunde ein Paar JS-Variablen zurueck.So weit so gut - dank JSON einfach.
Jetzt habe ich in einer Variablen einen Namen einer Funktion die ich in JS aufrufen will und dieser Funktion sollen auch Parameter mitgegeben werden. Ich habe nicht den blassesten Schimmer wie ich das anfangen muss.
Bsp. in Psydocode.
function Hallo(name)
{
alert('Hallo '+name);
}
function AjaxResonse
{
// variablen kommen von PHP
var funcName ="Hallo";
// -> jetzt soll die Funktion die in der Variablen funcName steht
// aufgerufen werden.
// Naive Versuche schlugen fehl.
// funcName('Jens'); geht ueberraschenderweise nicht ;(
// ebenso (function)funcName
}
Jemand eine Idee wie man das Verwirklicht?
}
Hallo,
Ich nehme an, Du meinst mit "Callback-Funktion" eine Rückruffunktion. Soetwas geht meines Wissens mit JavaScript nicht.
Grüße
Jan
Bsp. in Psydocode.
function Hallo(name)
{
alert('Hallo '+name);
}function AjaxResonse
{
// variablen kommen von PHP
var funcName ="Hallo";
// -> jetzt soll die Funktion die in der Variablen funcName steht
// aufgerufen werden.
// Naive Versuche schlugen fehl.
// funcName('Jens'); geht ueberraschenderweise nicht ;(
// ebenso (function)funcName
}Jemand eine Idee wie man das Verwirklicht?
Ja.
if(typeof window[funcName] == 'function') windowfuncName;
Struppi.
Ja.
Super :)
if(typeof window[funcName] == 'function') windowfuncName;
Mit neid muss ich anerkennen, dass dieses Vorgehn etwas eleganter ist als mein Vorgehem mit setTimeout().
Viel Dank
Manchmal muss man echt nur etwas ziellos durch selfhtml stoebern und schon findet man unverhofft eine Loesung :)
Ich denke ich kann setTimeout() fuer meine Zwecke missbrauchen.
Hallo Jens
Ich glaube du suchst die Funktion eval
http://de.selfhtml.org/javascript/objekte/unabhaengig.htm#eval
var funcName ="Hallo";
// -> jetzt soll die Funktion die in der Variablen funcName steht
// aufgerufen werden.
// Naive Versuche schlugen fehl.
// funcName('Jens'); geht ueberraschenderweise nicht ;(
eval(funcName('Jens'))
l.g. karl
Ich glaube du suchst die Funktion eval
http://de.selfhtml.org/javascript/objekte/unabhaengig.htm#eval
eval ist evil!
var funcName ="Hallo";
// -> jetzt soll die Funktion die in der Variablen funcName steht
// aufgerufen werden.
// Naive Versuche schlugen fehl.
// funcName('Jens'); geht ueberraschenderweise nicht ;(eval(funcName('Jens'))
... und auch hier nicht nötig, wie in 99% der Fällen wo es unter JS eingesetzt wird.
windowfuncName;
geht auch.
Struppi.
Hi,
ich mache grade mein Abschlussprojekt mit AJAX, bin auch schon ziemlich weit.
Meine Callback funktion sieht wie folgt aus:
//Angabe der Server URL
HTML_AJAX.defaultServerUrl='http://192.168.1.1/bla/bla' //hier deine Serverurl halt
HTML_AJAX.defaultEncoding = 'JSON'; //welches encoding benutzt werden soll
function getProjects()
{
HTML_AJAX.call('projectajax','getprojects',projekte);
}
Mit call spricht er folgendes an:
Projectajax ist die datei wo in php javascript funktionen hinterlegt sind
Getprojects ist die funktion die ich verwenden will
Projekte ist in diesem Fall ein Datenbankfeld das die funktion als übergabe erwartet
ich mache grade mein Abschlussprojekt mit AJAX, bin auch schon ziemlich weit.
Meine Callback funktion sieht wie folgt aus:
Was soll dort die Callbackfunktion sein?
HTML_AJAX.defaultServerUrl='http://192.168.1.1/bla/bla' //hier deine Serverurl halt
Das HTML_AJAX eine JS/PHP(PEAR) Bibliothek ist, verschweigst du. Und nach meinem kurzer Eindruck den ich von der Projektseite gewonnen habe ist sie auch noch sehr unfertig.
function getProjects()
{
HTML_AJAX.call('projectajax','getprojects',projekte);
}Mit call spricht er folgendes an:
Projectajax ist die datei wo in php javascript funktionen hinterlegt sind
Getprojects ist die funktion die ich verwenden will
Projekte ist in diesem Fall ein Datenbankfeld das die funktion als übergabe erwartet
Das deine Parameter ganz anders heißen (JS ist case sensitive) als in deiner Beschreibung ist Absicht?
Aber wo jetzt hier eine Callback Funktion sein soll ist mir eine Rätsel.
Struppi.