AJAX Installationsroutine über POST aus PHP

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

  • AJAX Installationsroutine über POST aus PHP

    Guten Morgen allerseits.

    Ich arbeite derzeit daran, eine Installation für mein Projekt zu schreiben und würde das ganze gerne mit AJAX ein bisschen "schöner" gestalten.

    Das ganze soll im Endeffekt so funktionieren, dass der User die Installation ganz normal durchläuft, also Daten in ein Formular schreibt, auf Weiter klickt, noch ein paar Daten eingibt, usw.

    Die Daten werden dabei von Formular zu Formular über POST weitergegeben (input type hidden), sodass ich im letzten Stadium der Eingabe quasi ein relativ großes Array an Daten habe, die ich jetzt in die Datenbank eintragen möchte (und davor natürlich noch die nötige DB-Struktur erstellen will).


    Der normale Weg wäre nun einfach die letzte Seite der Installation aufzurufen und alles einfach mit normalen Querys einzutragen. Das ist für meinen Geschmack aber weder schön noch dem User zugänglich.


    Daher habe ich mich entschieden, eine Progressbar zu erstellen, die anzeigt, was das Skript gerade macht und wieviel vom Gesamtprozess dies ist.

    Das könnte ich zwar auch mit ständigem Reloaden (header location) machen, jedoch habe ich nun entdeckt, dass man dafür auch AJAX verwenden könnte.


    Mein Problem ist nun einfach, wie ich mein POST-Array in das AJAX-Skript reinbekomme. Da es sich bei den Daten auch um sensible Passwörter handelt, würde ich das ungern über GET-Parameter lösen, was zwar einfacher, aber (nehme ich an?) unsicherer wäre.


    Ich hoffe, jemand versteht mein Problem und kann mir halbwegs nachvollziehbar erklären, wie ich auf meine POST-Daten in meinem AJAX-Skript zugreifen kann.
    This is what happens when an unstoppable force meets an immovable object.

  • #2
    Dir ist aber schon klar, dass das XMLHttpRequest-Objekt auf die POST-Methode verwenden kann?

    Kommentar


    • #3
      Ist es. Ist es?

      Aber wie? Ich meine, alle Beispiele die ich bisher gelesen habe, haben die POST-Daten direkt von einem Formular übergeben bekommen, aber es war nie ein Code-Schnipsel drin aus dem ich klar lesen konnte, dass es die POST-Daten in AJAX speichert?!

      Tut mir Leid, ich beschäftige mich grade vll. das zweite Mal mit AJAX ;-)

      Mein Kentnisstand ist momentan eigentlich so:

      Der Server ruft die PHP-Datei auf. AJAX wird dann erst bei der Ausgabe geladen, ist ja schließlich eigentlich nichts anderes als JS.

      So, jetzt ruft AJAX eine neue PHP-Datei auf (bei mir z.B. "installer.php") und übergibt Daten per GET oder POST.
      Bei GET ist die Sache einfach, der Aufruf wird einfach nicht "installer.php" sondern halt "installer.php?step=1" genannt.

      Aber wie krieg ich meine POST-Daten in diese durch AJAX aufgerufene Datei rein?


      Vielleicht steh ich grade einfach enorm auf dem Schlauch oder "RTFM" nicht richtig befolgt, jedoch erschließt mich mir gerade keine schlüssige Lösung, die ich aus deiner Antwort ziehen könnte :-(
      This is what happens when an unstoppable force meets an immovable object.

      Kommentar


      • #4
        schau dir mal das tutorial an, da werden daten per post übergeben. und du erfährst, auf was du dabei zu achten hast.

        peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          Okay, die Frage ist jetzt nur für mein Verständnis:

          Sehe ich das so richtig, dass ich selbst wenn ich das PHP-Skript mit POST-Daten füttere, im Prinzip die POST-Daten erstmal in einen GET-String umwandeln muss?
          This is what happens when an unstoppable force meets an immovable object.

          Kommentar


          • #6
            Zitat von ApoY2k Beitrag anzeigen
            Okay, die Frage ist jetzt nur für mein Verständnis:

            Sehe ich das so richtig, dass ich selbst wenn ich das PHP-Skript mit POST-Daten füttere, im Prinzip die POST-Daten erstmal in einen GET-String umwandeln muss?
            vom prinzip her musst du dir das so vorstellen. und natürlich den entsprechenden header mitsenden.

            peter
            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
            Meine Seite

            Kommentar


            • #7
              Zitat von ApoY2k Beitrag anzeigen
              Sehe ich das so richtig, dass ich selbst wenn ich das PHP-Skript mit POST-Daten füttere, im Prinzip die POST-Daten erstmal in einen GET-String umwandeln muss?
              Du siehst richtig, dass dein Browser das im Prinzip ganz genauso macht, wenn du ein Formular per POST versendest, ohne AJAX.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Okay, ich steige so langsam durch die ganze Geschichte =)

                Einige Fragen hätte ich allerdings noch. Wenn man die POST-Daten in einen String umwandelt, wird der in irgendeiner Form escaped?

                Angenommen z.B. ich habe einen langen Text, in dem diverse ' " \ / oder sonstige lustige (böse) Zeichen vorkommen, zerstört der mir dann nicht meinen String?

                Oder noch schlimmerer Fall: Was passiert, wenn in den Daten eines Feldes (z.B. wenn man in ein Textfeld Quellcode eingibt, und das per AJAX-POST ausgewertet werden soll), und in diesem Text findet sich auf einmal ein "&daten=wert" – was ja aber garnicht ein "wirkliches" Feld meines Strings darstellt?!
                This is what happens when an unstoppable force meets an immovable object.

                Kommentar


                • #9
                  schon mal ausprobiert? btw: mit firebug (konsole) kannst du das wunderbar auswerten

                  peter
                  Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                  Meine Seite

                  Kommentar


                  • #10
                    Zitat von ApoY2k Beitrag anzeigen
                    Wenn man die POST-Daten in einen String umwandelt, wird der in irgendeiner Form escaped?
                    Ja - in der gleichen Weise, wie bei GET.

                    encodeURIComponent
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      So, ich melde mich mal wiede zurück =)

                      Bin soweit echt super durchgekommen, riesen herzlichen Dank erstmal (dein Tutorial ist wie immer Klasse, auch wenn ich anmerken möchte, dass es manchmal doch etwas zu viele "…" in den Beispielskripts gibt für meinen Geschmack)

                      Dennoch, soweit funktioniert alles perfekt.


                      Ich schreibe jetzt noch alles auf jQuery-AJAX um, macht echt unglaublich viel einfacher.


                      Mein jetziges (neues *jipiieh*) Problem ist, dass ich versuchen möchte, eine Art CallBack-Function hinzuschneidern.


                      Im Grund soll das ganze so laufen (Pseudocode):

                      Code:
                      function ajaxProgress(file_name, progress_steps, function callBack())
                      {
                       … ajax script …
                       … wenn das ajax script fertig ist (also alle x="progress_steps" durchlaufen sind), soll eine vom user definierte funktion aufgerufen werden (der dritte parameter) …
                       if (progress_steps == x) {
                        callBack();
                       }
                      }
                      Für denjenigen, der die Funktion anwendet, soll es dann sozusagen ugf. so aussehen:

                      Code:
                      ajaxProgess("ajax_request.php", 10, function () {
                       … irgendwas machen, wenn ajax fertig ist …
                      });
                      Ich sehe diese Methode sehr häufig bei jQuery-Funktionen, komm aber leider nicht dahinter, wie man das selbst umsetzten kann :-/
                      This is what happens when an unstoppable force meets an immovable object.

                      Kommentar


                      • #12
                        Ich schreibe jetzt noch alles auf jQuery-AJAX um, macht echt unglaublich viel einfacher.
                        ...
                        Ich sehe diese Methode sehr häufig bei jQuery-Funktionen, komm aber leider nicht dahinter, wie man das selbst umsetzten kann :-/
                        Das hast du nun davon. bei jquery kann ich dir leider nicht helfen, ich programmier so was selber

                        peter
                        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                        Meine Seite

                        Kommentar


                        • #13
                          Hihi, ich sagte ja auch nur, dass ich es dort gesehen habe ;-)

                          Aber selbst das muss ja auch auf irgendeiner Funktionalität von JS basieren, dass man einer Funktion eine weitere Funktion als Parameter übergeben kann?!
                          This is what happens when an unstoppable force meets an immovable object.

                          Kommentar


                          • #14
                            Du musst den callback-Parameter nicht typisieren, wie kommst du auf sowas?
                            So sollte es aussehen:
                            PHP-Code:
                            function foo(callback) {
                                
                            callback();
                            }

                            foo(function() {
                                
                            alert('callback');
                            }); 

                            Kommentar


                            • #15
                              Ja wie gesagt; hatte keine Ahnung wie man sowas anstellt. War für mich nur verwirrend, wenn das einfach so wie ein normaler Parameter drinsteht, da es ja eigtl keine Variable ist…

                              Allerdings erhalte ich nun folgenden Fehler, wenn ich das genau so schreibe wie in deinem Beispiel…

                              Code:
                              TypeError: Result of expression 'ajaxEnd' [undefined] is not a function.

                              Code der AJAX-Funktion wäre:
                              Code:
                              function ajaxRun (file, steps, ajaxEnd)
                              {
                               … ajax zeug …
                               … wenn alle "steps" durchlaufen sind
                               {
                                ajaxEnd();
                               }
                              }
                              Der Aufruf erfolgt folgendermaßen:
                              Code:
                              ajaxRun ('ajax_request.php', 10, function () { … wenn ajax fertig ist etwas machen });
                              Zuletzt geändert von ApoY2k; 26.05.2009, 13:55.
                              This is what happens when an unstoppable force meets an immovable object.

                              Kommentar

                              Lädt...
                              X