tropenberta: php im hintergrund

hab noch ne kleinigkeit wo ich im netz net wirklich schlauer werde.
ich versende das formular an absenden.php. das wird dann in meinem fall auf der gleichen seite geladen (ohne target="_self" auf neuer seite). ich möchte aber gar nix laden lassen, eher will ich das das php script im hintergrund läuft, eventuell das auf der gleichen seite auf dem das formular ist ein alert fenster auf geht mit "gesendet" oder sowas drin.

<form action="php/absenden.php" method="post" target="_self" id="contact">

  1. Du willst dein Formular mit AJAX absenden.

    1. nö  nö

      erstmal will ich das formular absenden an mein php script. das php script soll aber nicht ne seite öffnen, sondern im hintergrund paar sachen ausführen. der benutzer soll nicht auf die seite absenden.php weitergeleitet werden, er soll auf der formular seite bleiben, das php script soll aber was machen.

      1. Na das ist was anderes. In diesem Fall würde ich sagen, du willst dein Formular mit AJAX absenden ...

        1. weis nicht genau was ajax is. irgendwie ne verkopplung mit php js und html oder so.
          ich will doch nur das sich beim absenden vom formular keine seite öffnet sondern die formularseite da bleibt, aber im hintergrund mein phpscript abgearbeitet wird.

          1. weis nicht genau was ajax is. irgendwie ne verkopplung mit php js und html oder so.

            Was Google, Yahoo und Bing ist weisst du aber?

            ich will doch nur das sich beim absenden vom formular keine seite öffnet sondern die formularseite da bleibt, aber im hintergrund mein phpscript abgearbeitet wird.

            Dann sende, verdammt nochmal, dein Formular per AJAX ab.

            1. Hallo,

              ich will doch nur das sich beim absenden vom formular keine seite öffnet sondern die formularseite da bleibt, aber im hintergrund mein phpscript abgearbeitet wird.
              Dann sende, verdammt nochmal, dein Formular per AJAX ab.

              ... oder bau das verarbeitende Script (PHP) so, dass es nur den Status "204 No Content" sendet, und dazu -wie angekündigt- kein Inhalt. Dann bleibt im Browser auch der bisherige Inhalt unverändert stehen.

              Eine Meldung an den Nutzer kann dann natürlich höchstens per Javascript erfolgen, beispielsweise als alert-Meldung im onsubmit-Handler des Formulars.

              Ciao,
               Martin

              @M.: Ich habe heute eine Lieferung Beeren erhalten, aber diese Woche leider wenig Zeit zum Verkosten. ;-)

              --
              Auf jeden Menschen auf der ganzen Welt entfallen statistisch gesehen etwa 3000 Spinnen, wie Wissenschaftler jetzt festgestellt haben.
              Wer will meine haben? Denn ich will sie bstimmt nicht.
              Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
  2. Tach!

    ich versende das formular an absenden.php. das wird dann in meinem fall auf der gleichen seite geladen (ohne target="_self" auf neuer seite). ich möchte aber gar nix laden lassen, eher will ich das das php script im hintergrund läuft, eventuell das auf der gleichen seite auf dem das formular ist ein alert fenster auf geht mit "gesendet" oder sowas drin.

    PHP läuft nicht im Hintergrund weiter. Wenn der Reqeust erledigt und beantwortet wurde, wird das Script beendet. Jede Aktion eines Clients muss einen neuen Request starten, der eine neue Script-Instanz erstellt und abarbeitet. An diesem Prinzip kommst du nicht vorbei. Auch Ajax macht das nicht anders, nur dass der Request für den Anwender unsichtbar vom Browser aus gestartet wird. Auf der Server-Seite läuft alles normal. Es wird ein Request entgegengenommen, ein Script gestartet, lediglich die Ausgabe ist keine HTML-Seite, sondern zum Beispiel in JSON verpackte Daten.

    Mit PHP problemlos möglich ist ein Selbstaufruf eines Scripts. Das verwendet man unter anderem bei einer Technik namens Affenformular. Das Formular wird so oft immer wieder dem Af^Hnwender vorgelegt, bis er es endlich richtig ausgefüllt hat. Vermutlich kannst du das so oder so ähnlich auch in deinem Fall anwenden. Der Erstaufruf erfolgt mit GET, Ausgabe ist das Formular. Das Absenden erzeugt einen POST-Request (zu erkennen an !empty($_POST)). Daraufhin werden die Daten geprüft, bei Erfolg die gewünschte Aktion ausgeführt und eine Erfolgsmeldung ausgegeben, ansonsten doch wieder nur das Formular, diesmal aber mit den bereits eingegebenen Werten vorausgefüllt und mit Fehlermeldungen gespickt, ausgegeben.

    dedlfix.