Rene: Seltsames Phänomen bei Ajax.Request und switch

Hi,
ich raff es gerade überhaupt nicht und bin am verzweifeln. Naja, nicht am verzweifeln, aber am grübeln.

Folgendes: Ich rufe per Ajax.Request (prototype-Framework) eine PHP-Datei auf.

varr ajax = new Ajax.Request
(
 "test.ajax.php",
 {
  method: "post",
  postBody: "action=refresh_all",
  requestHeader:["Content-Type", "text/html"],
  onComplete: function(r)
  {
   eval(r.responseText);
  },
  onFailure: function(r)
  {
   falert(r.responseText);
  }
 }
)

In der PHP-Date test.ajax.php wird der übergebene Parameter $action ausgewertet:

switch($action)
{
   case "refresh_all":
      // Hauptrubriken bestimmen
      frefresh_maincats();

break;
  default:
      echo "\nalert('Fehler im System');";
}

Mit Firebug für den Firefox (ich habe Version 3) überprüfe ich das Resultat. Wenn die Funktion frefresh_maincats keine Ausgabe (echo irgendwas) produziert, erhalte ich als Antwort auf den Ajax.Request (laut Firebug) den default "alert('Fehler im System: Die Option  existiert nicht.');". Eigentlich müsste ich eine leere Antwort bekommen, oder nicht? Produziert die Funktion frefresh_maincats stattdessen eine Ausgabe, erhalte ich diese Ausgabe als Antwort auf den Ajax.Request (laut Firebug).
Ist jetzt nicht weiter schlimm, da dieses Phänomen nur mit leerer Datenbank auftritt, aber interessieren würde mich das schon, woran das liegt.

  1. Hallo, Tipp ins Blaue:

    method: "post",
      postBody: "action=refresh_all",

    switch($action)
    {
       case "refresh_all":
          // Hauptrubriken bestimmen
          frefresh_maincats();

    break;
      default:
          echo "\nalert('Fehler im System');";
    }

    Ich sehe was voin "action=refresh_all" aber nicht nur "refresh_all" ... lass doch mal $action mit echo ausgeben ... mal sehen was da dann rauskommt?

    Ciao, Frank

    1. Hallo, Tipp ins Blaue:

      method: "post",
        postBody: "action=refresh_all",

      switch($action)
      {
         case "refresh_all":
            // Hauptrubriken bestimmen
            frefresh_maincats();

      break;
        default:
            echo "\nalert('Fehler im System');";
      }

      Ich sehe was voin "action=refresh_all" aber nicht nur "refresh_all" ... lass doch mal $action mit echo ausgeben ... mal sehen was da dann rauskommt?

      Ciao, Frank

      Hi, den Gedanken hatte ich auch schon. Sobald irgendeine Ausgabe in der PHP-Datei test.ajax.php erfolgt, z. B. echo $action, gibt mir Firebug diese auch als Antwort aus. Bei echo $action eben "refresh_all". Erfolgt keine Ausgabe bekomme ich den default, egal welchen String $action enthält.

      1. Hallo,

        bitte nicht immer alles zitieren (Stichwort: TOFU)

        Irgendwo in deiner Kette von $action und switch ist ein banaler Fehler (case sensitivity, trimming ...). Eliminiere die funktionierenden Teile deiner gesamten Kette um den Bösewicht dazwischen zu finden.

        Ruf doch mal ganz unabhängig vom Switch diese frefresh_maincats() Funktion auf, gibts dann einen Fehler?

        Ciao, Frank