Jens: Callback Funktion bauen

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?
}

  1. Hallo,

    Ich nehme an, Du meinst mit "Callback-Funktion" eine Rückruffunktion. Soetwas geht meines Wissens mit JavaScript nicht.

    Grüße
    Jan

  2. 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.

    1. 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

  3. 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.

  4. 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

    1. 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.

  5. 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

    1. 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.