Ankündigung

Einklappen
Keine Ankündigung bisher.

Ausführen eines Forms innerhalb eines durch jQuery-Ajax geladenes PHP-Files

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Ausführen eines Forms innerhalb eines durch jQuery-Ajax geladenes PHP-Files

    Hallo,
    In den Body einer Datei A.php wird mittels jQuery-.load('B.php') geladen. In Datei B.php befindet sich ein form, dessen action-attribut leer ist, damit sich die Datei selbst aufruft.
    Dort soll zum Beispiel lediglich eine Ausgabe des durch das form abgesendeten Inhalts geschehen. Zur Veranschaulichung hier das ganze vereinfacht:
    PHP-Code:
    <form action="" method="POST">
         <input type="text" name="abc" />
    </form>
    <?php
         
    if( !empty($_POST) ) {
              echo 
    $_POST['abc'];
         }
    ?>
    Problem ist ja, dass durch das leere action-attribut und die load-function vermutlich auf Datei A.php geleitet wird und demnach dort die Überprüfung für $_POST geschehen müsste.
    Gibt es noch eine Möglichkeit, die Funktionen der Datei B.php zu kapseln? Ich möchte möglichst wenige Dateien haben, die aber Übersichtlich sein sollen.

    PS: Datei B.php allein funktioniert einwandfrei. Nur eben durch den .load()-Aufruf nicht.

  • #2
    Schreib in das action-Attribut die richtige Adresse rein.

    Kommentar


    • #3
      Zitat von hellbringer Beitrag anzeigen
      Schreib in das action-Attribut die richtige Adresse rein.
      Aber dann wird der Inhalt ja nicht mehr in Datei A.php integriert...

      Kommentar


      • #4
        Zitat von JohnHSmith Beitrag anzeigen
        Aber dann wird der Inhalt ja nicht mehr in Datei A.php integriert...
        Wenn du das Formular mit AJAX absendest, kannst du das Ergebnis davon auch wieder integriert darstellen.

        Kommentar


        • #5
          Zitat von hellbringer Beitrag anzeigen

          Wenn du das Formular mit AJAX absendest, kannst du das Ergebnis davon auch wieder integriert darstellen.
          Ich kann mir gerade nicht ganz vorstellen, wie es laufen soll. Könntest du mir das ein wenig genauer beschreiben? Danke

          Kommentar


          • #6
            actiion="b.php"
            eventuell noch mit dem Pfad dazu, dann
            actiion="http://example.com/path/b.php"

            Kommentar


            • #7
              Zitat von JohnHSmith Beitrag anzeigen
              Ich kann mir gerade nicht ganz vorstellen, wie es laufen soll. Könntest du mir das ein wenig genauer beschreiben? Danke
              Dein B.php bekommt den AJAX Request mit den Form-Daten gesendet, verarbeitet diesen und gibt den Response zurück. Diesen Responst "nimmst" du ja auch wieder mit AJAX entgegen und zeigst dann entsprechend - was auch immer - an.
              The string "()()" is not palindrom but the String "())(" is.

              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
              PHP.de Wissenssammlung | Kein Support per PN

              Kommentar


              • #8
                Schau mal da.. Vom Prinzip sowas hier: https://www.w3schools.com/js/tryit.a...ax_suggest_php
                The string "()()" is not palindrom but the String "())(" is.

                Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                PHP.de Wissenssammlung | Kein Support per PN

                Kommentar


                • #9
                  Zitat von hausl Beitrag anzeigen
                  Schau mal da.. Vom Prinzip sowas hier: https://www.w3schools.com/js/tryit.a...ax_suggest_php
                  Aber dort befindet sich ja das Formular direkt in Datei A.php, während es sich bei mir auf B.php befinden muss. Müsste ich dementsprechend dann eine 3. Datei anlegen?

                  Kommentar


                  • #10
                    Dem Browser oder AJAX (= JS = läuft im Brwoser) ist es egal woher der HTML-Quelltext von dem HTML-Formular kommt. PHP Dateien geben ja unterm Strich auch nur "Text" aus, hier halt ein HTML-Form.

                    Es geht darum, und das ist relevant, wohin (welches PHP-Script) schickst du den FormSubmit-Request, dann passiert dort was (am Server mittels PHP) und dann bekommst du davon was zurück und reagierst am Client darauf (AJAX).
                    The string "()()" is not palindrom but the String "())(" is.

                    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                    PHP.de Wissenssammlung | Kein Support per PN

                    Kommentar


                    • #11
                      Zitat von hausl Beitrag anzeigen
                      Dem Browser oder AJAX ist es aber egal woher das HTML-Form kommt. PHP Dateien geben ja unterm Strich auch nur "Text" aus, hier halt ein HTML-Form.

                      Es geht darum, und das ist relevant, wohin schickst du den FormSubmit-Request, dann passiert was (am Server) und dann bekommst du davon was zurück und reagierst am Client darauf (AJAX).
                      Und wie könnte ich das dann konkret umsetzen? Ich möchte keinen Code von dir, nur einen Hinweis wie ich das am besten umsetze. Ich verstehe immer noch nicht so ganz, welche Datei da was laden sollte und so Weiter.

                      Kommentar


                      • #12
                        Am besten schaust du dir das noch mal an wie AJAX funktioniert im Client Server Schaubild
                        https://de.wikipedia.org/wiki/Ajax_(Programmierung).

                        Der Grund warum du auf der A.php Seite landest hat auch mit AJAX im engeren Sinne nichts zu tun sondern weil der Browser URLs von der Hauptseite aus betrachtet und fehlende Teile einer relativen URL ersetzt. Würde er das nicht machen, müsste man immer eine absolute URL angeben.
                        Da du nun die URL im action Attribut komplett auslässt wird die URL vom Browser dort eingesetzt und das ist die, unter der die Hauptseite läuft.

                        Kommentar


                        • #13
                          Zitat von protestix Beitrag anzeigen
                          Am besten schaust du dir das noch mal an wie AJAX funktioniert im Client Server Schaubild
                          https://de.wikipedia.org/wiki/Ajax_(Programmierung).

                          Der Grund warum du auf der A.php Seite landest hat auch mit AJAX im engeren Sinne nichts zu tun sondern weil der Browser URLs von der Hauptseite aus betrachtet und fehlende Teile einer relativen URL ersetzt. Würde er das nicht machen, müsste man immer eine absolute URL angeben.
                          Da du nun die URL im action Attribut komplett auslässt wird die URL vom Browser dort eingesetzt und das ist die, unter der die Hauptseite läuft.
                          Die Funktionsweise von AJAX verstehe ich durchaus, ebenso wie den Grund, warum ich auf A.php lande. Das habe ich im Thema mit dem Satz 'Problem ist ja, dass durch das leere action-attribut und die load-function vermutlich auf Datei A.php geleitet wird und demnach dort die Überprüfung für $_POST geschehen müsste.' ausdrücken wollen.
                          Wenn ich jetzt die URL/Pfad zur B.php direkt im (in der B.php vorhandenen) Formular als action eintrage, leitet mich die Seite ja auf B.php weiter. Jedoch soll nur der dort kommende Inhalt in der A.php angezeigt werden und nicht komplett dorthin weitergeleitet werden.

                          Kommentar


                          • #14
                            Wenn du AJAX für den Submit verwendest, darfst du das Formular natürlich nicht auch noch absenden.

                            Kommentar


                            • #15
                              Zitat von Dormilich Beitrag anzeigen
                              Wenn du AJAX für den Submit verwendest, darfst du das Formular natürlich nicht auch noch absenden.
                              Aktuell wird AJAX lediglich für das Laden der von B.php in A.php verwendet. Alles andere ist bis dato plain mit HTML/PHP.

                              Kommentar

                              Lädt...
                              X