Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP-Datei empfängt die gesendeten Daten nicht

Einklappen

Neue Werbung 2019

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

  • PHP-Datei empfängt die gesendeten Daten nicht

    Hey,

    ich sende mit ajax die daten an mein php script. Nun ist aber das Problem da, dass mein PHP-Script nichts empfängt von dem, obwohl die Meldung "Yes" in der Browserkonsole kommt, die nur angezeigt wird wenn der ajaxrequest auch erfolgreich war.
    Habe jetzt auch schon im internet nachgeschaut, aber daraus werde ich nicht schlüssig. Habe schon den Post array so ausgegeben mit var_dump und print_r aber da kommt auch nix raus. Der Post-Arrray bleibt leer.

    Habe jetzt mir auch die msg von der done function ausgeben lassen und da kommt dies raus (auf der ticker.html) : Array ( [spielbeschreibung] => test ). Jetzt wird nurnoch der String ausgegeben.

    Was mache ich falsch ?

    Script:
    HTML-Code:
    <form id="adminFormular">
                <textarea id="spielbeschreibung"></textarea>
                <button id="sb_senden">Senden...</button>
                <p id="rueckmeldung"></p>
            </form>
    Code:
        <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
        <script>
            $(document).ready(function(){
                $("#adminFormular").submit(function(event){
                    if($("#spielbeschreibung").val() == ""){
                        $("#rueckmeldung").html("<span>Textarea ist leer! Bitte ausfüllen!</span>");
                        $('textarea').addClass("border_red");
                           return false;
                }
    
                $("#rueckmeldung").html("<span>Spielbeschreibung hinzugefügt</span>");
                event.preventDefault();
    
                var sendedaten = "spielbeschreibung=" + $("#spielbeschreibung").val();
                var ajaxRequest = $.ajax({
                    url: "ticker.php",
                    method: "POST",
                    data: sendedaten
                });
    
                ajaxRequest.done(function(){
                    console.log("Yes");
                });
    
                ajaxRequest.fail(function(){
                    console.log("No");
                });
            });      
        });
    </script>
    PHP-Code:
    <?php
        
    if(isset($_POST['spielbeschreibung'])){

            
    $spielbeschreibung $_POST['spielbeschreibung'];
            echo 
    $spielbeschreibung;
        } else{
            echo 
    "nop";
        }

        
    //print_r($_POST);
    ?>
    Wenn jemand Hilfe bei einem Projekt braucht bin ich bereit kostenfrei mitzuhelfen, denn ich möchte mehr Erfahrung sammeln.

  • #2
    Gib Deiner <textarea> mal das Attribut name="spielbeschreibung"
    Ach ne, is quatsch, Du greifst ja über die ID auf den Inhalt zu.

    Nochmal zum Verständnis: Wenn Du in der ticker.php folgendes machst:
    PHP-Code:
    var_dump($_POST); 
    und in im done das ( ich glaube das war so bei jQeury? Nutze immer reines JS für sowas ):
    Code:
    console.log(this.responseText);
    Was erhältst Du dann in der Konsole?
    Competence-Center -> Enjoy the Informatrix
    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

    Kommentar


    • #3
      Hey,

      jetzt ist es echt komisch. Jetzt gehts nicht mehr und es kommen Fehler die vorher nicht aufgetreten sind:

      Adresse: file:///G:/xampp/htdocs/php/projekte/liveticker/ticker.php Zeile Nr. 10, Spalte 3: ticker.php:10:3
      XML-Verarbeitungsfehler: Kein Wurzel-Element gefunden Adresse: file:///G:/xampp/htdocs/php/projekte/liveticker/ticker.html Zeile Nr. 10, Spalte 3: ticker.html:10:3

      Ich blicke grad nicht mehr durch. Habe jetzt die php datei in einen ordner den dann die url geändert und die daten werden wieder gesendet ? Was ist denn da los?

      console.log(this.responseText); funktioniert da nicht, gibt undefined zurück. Aber man kann der done-function als parameter die message mitgeben (den inhalt welcher gesendet wird). Wenn ich dies mir console.log ausebe kommt auch der inhalt raus.

      Es wird dies ausgegeben in der konsole:

      Yes ticker.html:29:17
      array(1) {
      ["spielbeschreibung"]=>
      string(4) "1212"
      }
      Wenn jemand Hilfe bei einem Projekt braucht bin ich bereit kostenfrei mitzuhelfen, denn ich möchte mehr Erfahrung sammeln.

      Kommentar


      • #4
        Kleines Beispiel mit reinem JS, vielleicht ist das ja ne Option, anstatt über jQuery zu gehen. Biel aufwändiger ist das nicht:
        HTML-Code:
        <!DOCTYPE html>
        <html lang="de-DE">
        <head>
        <meta charset="utf-8">
        <title>DEMO: XMLHttpRequest</title>
        <script type="text/javascript" src="./http-ticker.js"></script>
        </head>
        <body>
        
        <form method="post">
            <textarea></textarea>
            <button type="submit">Senden</button>
        </form>
        
        <p id="rueckmeldung"></p>
        
        </body>
        </html>
        Code:
        document.addEventListener( 'DOMContentLoaded', function() {
        
            document.querySelector( 'form > button' ).addEventListener( 'click', function(e) {
        
                e.preventDefault();
        
                var oR = new XMLHttpRequest();
                oR.addEventListener( 'load', function() {
        
                    document.getElementById( 'rueckmeldung' ).innerText = this.responseText;
                    console.log( this.responseText );
        
                });
        
                oR.open( 'POST', 'ticker.php', true );
                oR.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded' );
        
                sPostData = 'spielbeschreibung=' + encodeURI( document.querySelector( 'form > textarea' ).value );
                oR.send( sPostData );
        
            });
        
        });
        PHP-Code:
        $sDescription = isset( $_POST['spielbeschreibung'] )
                ? 
        filter_inputINPUT_POST'spielbeschreibung'FILTER_SANITIZE_STRING )
                : 
        'keine Daten erhalten';

        var_dump$sDescription ); 
        Hier kannst Du das testen: http://www.php-rocks.de/samples/javascript-http/
        Competence-Center -> Enjoy the Informatrix
        PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

        Kommentar


        • #5
          Zitat von Conner Beitrag anzeigen
          Habe jetzt mir auch die msg von der done function ausgeben lassen und da kommt dies raus (auf der ticker.html) : Array ( [spielbeschreibung] => test )
          Also werden die Daten korrekt gesendet und sogar von PHP ausgegeben.
          [SIZE="1"]Atwood's Law: any application that can be written in JavaScript, will eventually be written in JavaScript.[/SIZE]

          Kommentar


          • #6
            Zitat von Arne Drews Beitrag anzeigen
            Biel aufwändiger ist das nicht
            Eigentlich schon. Mit jQuery reicht:
            Code:
            $.post("ticker.php", $("#adminFormular").serialize());

            Kommentar


            • #7
              Ja, das stimmt. + das komplette jQuery
              Competence-Center -> Enjoy the Informatrix
              PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

              Kommentar


              • #8
                Zitat von Arne Drews Beitrag anzeigen
                Ja, das stimmt. + das komplette jQuery
                Das ich zum Glück nicht schreiben, sondern nur einbinden muss

                Kommentar


                • #9
                  Arne Drews : Vielen Dank für das Zeigen, wie es mit reinem js geht. Ist immer interessant und gut wenn man mehrere Wege kennt um etwas zu lösen. Aber ich habe jetzt mit Ajax noch nix gemacht und möchte unbedingt mir beibringen, es lernen, wie es mit Ajax geht. Trotzdem danke für die Demonstration eines weiteren Lösungsweges.

                  lottikarotti : dies wird nur angezeigt bei der done function wenn man sich den msg Parameter ausgeben lässt. Im PHP-Skript kommt nichts an. Der Post Array ist leer.

                  hellbringer : braucht man nur die Post Funktion von jquery dafür? Oder ist diese in Verbindung mit der submit Funktionen zu verwenden?
                  Wenn jemand Hilfe bei einem Projekt braucht bin ich bereit kostenfrei mitzuhelfen, denn ich möchte mehr Erfahrung sammeln.

                  Kommentar


                  • #10
                    Zitat von Conner Beitrag anzeigen
                    Arne Drews : Vielen Dank für das Zeigen, wie es mit reinem js geht. Ist immer interessant und gut wenn man mehrere Wege kennt um etwas zu lösen. Aber ich habe jetzt mit Ajax noch nix gemacht und möchte unbedingt mir beibringen, es lernen, wie es mit Ajax geht. Trotzdem danke für die Demonstration eines weiteren Lösungsweges.
                    Aber wenn Du es lernen willst, macht es doch Sinn bei der Basis anzufangen. Ajax ist kein auf jQuery basierendes Verfahren, sondern ein auf JavaScript basierendes. jQuery bietet Dir nur, wie andere Libraries/Frameworks auch ein ShortHand, um das ganze etwas zu vereinfachen.
                    Wenn Du nur wegen solcher Kleinigkeiten jQuery einbindest, ist das aus meiner Sicht einfach nur Overhead.

                    Zitat von Conner Beitrag anzeigen
                    hellbringer : braucht man nur die Post Funktion von jquery dafür? Oder ist diese in Verbindung mit der submit Funktionen zu verwenden?
                    Lies halt auch mal die Doku: jQuery.post()
                    Competence-Center -> Enjoy the Informatrix
                    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                    Kommentar


                    • #11
                      Zitat von Conner Beitrag anzeigen
                      lottikarotti : dies wird nur angezeigt bei der done function wenn man sich den msg Parameter ausgeben lässt.
                      Und das ist die Ausgabe von $_POST.
                      [SIZE="1"]Atwood's Law: any application that can be written in JavaScript, will eventually be written in JavaScript.[/SIZE]

                      Kommentar


                      • #12
                        Arne Drews : Aso ok. Dachte das ist nur bei jquery dabei. Dann starte ich dort erstmal.

                        lottikarotti : Nein. Das wird nur bei der konsole ausgegeben. Beim PHP-Script kommt nichts an.:
                        Wenn jemand Hilfe bei einem Projekt braucht bin ich bereit kostenfrei mitzuhelfen, denn ich möchte mehr Erfahrung sammeln.

                        Kommentar


                        • #13
                          Zitat von Conner Beitrag anzeigen
                          lottikarotti : Nein. Das wird nur bei der konsole ausgegeben. Beim PHP-Script kommt nichts an.:
                          Nein.

                          Der erste Parameter der done-Funktion enthält die Antwort vom Server (Response). Diese Antwort kann in diesem Fall nur durch PHP erzeugt worden sein, denn es gibt in JavaScript keine Funktion, die eine Ausgabe wie "Array ( [spielbeschreibung] => test )" erzeugt. Eine solche Ausgabe erzeugt typischerweise die PHP-Funktion print_r. Hier ein Beispiel (achte auf die Ausgabe).

                          Ich glaube hier liegt weniger ein technisches Problem sondern vielmehr ein Verständnisproblem vor. Dein Code - wenn ich ihn 1:1 kopiere - funktioniert und $_POST wird auch korrekt befüllt.
                          [SIZE="1"]Atwood's Law: any application that can be written in JavaScript, will eventually be written in JavaScript.[/SIZE]

                          Kommentar


                          • #14
                            Zitat von Conner Beitrag anzeigen
                            lottikarotti : Nein. Das wird nur bei der konsole ausgegeben. Beim PHP-Script kommt nichts an.:
                            Nein, der msg-Parameter, den Du in der Konsole ausgibst, muss den Wert ja irgendwo herbekommen. Welche andere Möglichkeit würde Dir einfallen, als dass dieser aus dem PHP-Script kommt, nämlich als Rückgabewert/Ausgabe von var_dump($_POST).

                            Ich frage mich viel mehr, woran Du fest machst, dass $_POST angeblich leer ist und in der PHP nichts ankommt?
                            Dir ist klar, dass Du die nicht direkt per URL aufrufen kannst?!


                            Competence-Center -> Enjoy the Informatrix
                            PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                            Kommentar


                            • #15
                              Aso ok. Dachte, dass die value einfach angezeigt wird in einem array durch JS. Also wird die value des textfeldes an das php-script gesendet und mit var_dump gebe ich dann diese value mit dem msg parameter aus ? Dann ist also der msg Parameter dies was ich in der PHP Datei ausgebe?

                              Ich frage mich viel mehr, woran Du fest machst, dass $_POST angeblich leer ist und in der PHP nichts ankommt?
                              Ich mach es daran fest, dass die php-seite wenn ich diese aufrufe einen leeren post-array zurückgibt. Siehe http://conner.bplaced.net/

                              Dir ist klar, dass Du die nicht direkt per URL aufrufen kannst?!
                              Wie meinst du das ?
                              Wenn jemand Hilfe bei einem Projekt braucht bin ich bereit kostenfrei mitzuhelfen, denn ich möchte mehr Erfahrung sammeln.

                              Kommentar

                              Lädt...
                              X