Ankündigung

Einklappen
Keine Ankündigung bisher.

Ajax Variable zwischenspeichern

Einklappen

Neue Werbung 2019

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

  • Ajax Variable zwischenspeichern

    Hallo zusammen,

    ich habe ein kleines Webquiz gebaut mit JS und JQuery. Es gibt 10 Fragen, die wenn richtig beantwortet werden, jeweils einen Punkt geben. Nach der letzten Frage werden die Punkte in eine Datenbank über ein PHP Skript geschrieben.
    Das funktioniert soweit auch gut. Jetzt möchte ich aber nach dem Quiz noch zwei Textfelder einbauen, wo man seinen Namen eintragen kann, die ebenfalls an die DB gehen.
    Im Moment werden aber pro durchspielen 2 DB Einträge generiert. Der erste mit der Punktzahl nach beenden der letzten Frage und der zweite mit Abschicken des Textfeldes.
    Wie kann ich die Ajax Variable so steuern, dass diese erst mit dem Drücken des Senden Buttons übergeben wird und nicht nach der letzten Frage?

    Javascript Datei
    PHP-Code:
    function showEnd() {
        $(
    "#endpoints").text(points);
        $(
    "#possiblepoints").text(rightAnswerPoints questions.length);
        $(
    "#question").fadeOut(function() {
            $(
    ".quiz_end").fadeIn(function(){
                 var 
    endpunkte=$('#endpoints').html();
                 $.
    ajax({ type"GET"url"übergabe.php"/** das hier ist das Skript für den Datenbankeintrag
                       data: {message:endpunkte},
                       success: function(data){

                        $("#answer_commit_btn").hide(); 
    Hier ist die HTML Index-Datei mit dem Formularfeld -> Der Button soll die Punktzahl der Variable "message" aus dem JS Skript und die Inhalte der beiden Textfelder "vorname" und "nachname" gleichzeitig an die übergabe.php übertragen.

    PHP-Code:
                     <div >
                                   <
    form <form method="post" autocomplete="off">
                                   <
    input type ="text" name="vorname"  value="" placeholder="Vorname" size="15">

                                     <
    input type ="text" name="nachname" value=""  placeholder="Nachname" size="15">
                              </
    div>

                            <
    div>
                                <
    p><button type="submit" action="übergabe.php" class="btn btn-primary btn-lg" role=
                                
    "button" hidden ><span id="sendName" >Abschicken</span></button></p>
                                </
    form>
                            </
    div

  • #2
    sessionStorage?
    Competence-Center -> Enjoy the Informatrix
    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

    Kommentar


    • #3
      Hmm ich hab die Eingabefelder jetzt an den Anfang des Quiz platziert und die Ajax Abfrage geändert, sodass alle Einträge zur selben Zeit kommen sollen.
      Leider wird jetzt gar nichts mehr in die DB geschrieben ((

      Kann es sein, dass die Inputboxen irgendwie falsch sind???

      HTML-Code:
      <div id="start_screen" class="jumbotron quiz_start">
                            <h1>Herzlich Willkommen!</h1>
      
                            <p>Trage hier noch deinen Namen ein, um am Gewinnspiel teilzunehmen!</p>
                              <div >
                                     <form  method="get" autocomplete="off">
                                     <input type ="text" name="vorname"  id="vorname" value="" placeholder="Vorname" size="15">
      
                                       <input type ="text" name="nachname" value="" id="nachname" placeholder="Nachname" size="15"> </form>
                </div>
      PHP-Code:
      function showEnd() {
          $(
      "#endpoints").text(points);
          $(
      "#possiblepoints").text(rightAnswerPoints questions.length);
          $(
      "#question").fadeOut(function() {
              $(
      ".quiz_end").fadeIn(function(){
                   var 
      endpunkte=$('#endpoints').html();
                  $.
      ajax({
                      
      type"GET"url"übergabe.php",

                      
      data: {
                          
      messageendpunkte,
                          
      vornamevorname,
                          
      nachnamenachname
                      
      },
                      
      success: function (data) {

                          $(
      "#answer_commit_btn").hide();
                      }
                  });
              }); 

      Kommentar


      • #4
        GET dient dazu Daten abzufragen und wird unter anderem vom Browser und Webserver auch so behandelt. Wenn du Daten schrieben möchtest, verwendet POST.

        Kommentar


        • #5
          Mit JS die Form serialisieren und das dann (per POST!) an den Server schicken.

          Gib der Form eine id und ersetze das:
          Code:
           data: {
                              message: endpunkte,
                              vorname: vorname,
                              nachname: nachname
                          }
          durch das:
          Code:
           data: $('#form_id').serialize()
          wobei "form_id" die eben vergebene ID ist.
          Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

          Kommentar

          Lädt...
          X