2016-10-20 6 views
0

Ich habe ein Formular mit vier <input type='submit'/> Tasten und action='updateEstado.php'. Außerdem habe ich einige jQuery-Code, der startet, wenn ich auf eine Schaltfläche klicke.JQUERY + PHP POST senden keine Werte

<!-- CHANGE STATUS MODAL MENU --> 

<div class="modal fade" id="change" tabindex="-1" role="dialog" aria-labelledby="change" aria-hidden="true"> 
    <div class="modal-dialog"> 
     <div class="modal-content"> 

      <div class="modal-header"> 
       <button type="button" class="close" data-dismiss="modal" aria-hidden="true"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span></button> 
       <h4 class="modal-title custom_align" id="Heading">CANVIAR ESTAT</h3>  
      </div> 

      <form action="updateEstado.php" method="post"> 
       <div class="modal-body"> 
        <div class=" text-center"> 

           <div class="container-fluid"> 
            <div class="row"> 
             <div class="col-md-12 text-center"> 
              <input type="submit" id="cambiarestado" class="btn btn-modal-estado" style="background-color:YellowGreen; color:white;" value="ACTIVAT"> 
             </div> 
            </div> 

            <div class="row"> 
             <div class="col-md-12 text-center"> 
              <input type="submit" id="cambiarestado" class="btn btn-modal-estado" style="background-color:Tomato; color:white;" value="PENDENT MIQUEL ALIMENTACIÓ">   
             </div> 
            </div> 

            <div class="row "> 
             <div class="col-md-12 text center"> 
              <input type="submit" id="cambiarestado" class="btn btn-modal-estado" style="background-color:SkyBlue; color:white;" value="PENDENT ADDCOM"> 
             </div> 
            </div> 

            <div class="row"> 
             <div class="col-md-12 text center"> 
              <input type="submit" id="cambiarestado" class="btn btn-modal-estado" style="background-color:Gray; color:white;" value="DESACTIVAT"> 
             </div> 
            </div> 

            <div class="row"> 
             <h5 id='codigosSeleccionados'></h5> 
            </div> 
           </div>  

         </div> 
        </div> 
       </form> 
      </div> 
     </div> 
    </div> 
</div> 


<script> 
    $('#cambiarestado').click(function(){ 
     event.preventDefault();      
     // Get the value of the input fields 
     var inputvalue = $(this).attr("value"); 

     // Send Ajax request to updateEstado.php, with value set as 'input' in the POST data 
     $.post("updateEstado.php", {estado: "DESACTIVAT", codigo: "38"}); 

     alert(inputvalue);   
    }); 
</script> 

Ich habe den jQuery-Code mit dieser neuen Linie aktualisiert: event.preventDefault();

Nun, wenn ich die updateEstado.php der Konsole zeigen diese Meldung starten:

enter image description here

Wenn ich diese löschen Zeile: $.post("updateEstado2.php", {estado: "DESACTIVAT", codigo: "38"});

Die Show-Nachricht verschwinden. Es ist klar, das ist das Problem. Die Lösung? Ich kann nicht ...

+1

Sie haben einzigartige 'id' Namen zu verwenden. Verwenden Sie stattdessen "class" als Auslöser. – Rasclatt

+0

Übermitteln Schaltflächen senden das Formular wie es ist. Ihr jQuery-Code wird niemals ausgeführt. Sie müssen dem Formular selbst eine onsubmit-Funktion hinzufügen: http://www.w3schools.com/jsref/event_onsubmit.asp Außerdem müssen IDs eindeutig sein. – Danmoreng

+0

Ja, der Code wird ausgeführt, weil ich die Warnmeldung in der Jquery anzeigen kann. – ruzD

Antwort

1

Der Submit-Button sendet das Formular, wenn es nicht blockiert ist. Sie können es mit preventDefault() blockieren.

zum Beispiel:

$('#cambiarestado').click(function(event){ 
    event.preventDefault(); 
    ...rest of your code ... 
+0

Es funktioniert nicht, wenn ich ein Ereignis einstelle.Standard verhindern(); Der jquery-Code wird nicht ausgeführt, wenn ich auf die Schaltfläche klicke. Das Problem ist invers, wenn ich auf die Schaltfläche klicke, wird die jQuery ausgeführt und die Formulareingabeaktion wird nicht ausgeführt. – ruzD

+0

Sind Sie sicher, dass Sie nicht nur einen JS-Fehler haben? Diese Antwort sollte funktionieren (stellen Sie sicher, dass Sie einen Ereignisparameter zu Ihrem Klick-Callback hinzufügen). – Jacob

0

Wenn Knopf ist einreichen, wenn Sie in der Knopfform klicken, ohne die Werte von $.post-updateEstado.php submited werden. Sie können das Formular mit JQuery und senden die Daten senden:

<form id="form" > 
    <div class="row"> 
     <div class="col-md-12 text center"> 
      <input type="submit" id="cambiarestado" class="btn btn-modal-estado" style="background-color:Gray; color:white;" value="DESACTIVAT"> 
     </div> 
    </div> 
</form> 

Funktion:

$('#form').on('submit', function(e){ 
    $.post("updateEstado.php", {estado: "DESACTIVAT", codigo: "38"}); 
}); 

Oder, wenn Sie die Werte der Taste erhalten möchten:

<form id="form" > 
    <div class="row"> 
     <div class="col-md-12 text center"> 
      <input type="button" id="cambiarestado" class="btn btn-modal-estado" style="background-color:Gray; color:white;" value="DESACTIVAT"> 
     </div> 
    </div> 
</form> 

Hinweis Typ ist Taste, und auf diese Weise Form wird nicht eingereicht.

$('button').click(function(){ 
    var inputvalue = $(this).attr("value");   
    $.post("updateEstado.php", {estado: inputvalue, codigo: "38"});    
}); 
+0

Zum Testen ändere ich den Code: in action = 'updateEstado.php' aber im jquery Code updateEstado2.php und mit Hilfe deiner jquery Funktion #form mit $ .post ("updateEstado2.php") starte updateEstado.php :( – ruzD

+0

Sie setzen die ID von 'form' zu bilden?'

' –

+0

ja, habe ich die ID des Formulars geändert. – ruzD

1

Wenn Sie wirklich wollen, das Formular per JavaScript unterbreiten, anstelle des Standard-HTML-Formular einreichen, können Sie mehrere Dinge zu tun haben:

  1. füge eine onsubmit Funktion Form
  2. Einsatz Event.preventDefault() aufzuheben die normale Form einreichen
  3. die Werte aus der Form erhalten
  4. eine manuelle Form Sie über jQuery einreichen

ABER ich denke, dass Sie etwas viel trivialer tun möchten: Senden Sie zwei Werte, unabhängig davon, welche Option der Benutzer klickt.

Der einfachste Weg, dies zu archieve, ist versteckte Eingänge zu verwenden:

<input type="hidden" name="estado" value="DESACTIVAT"> 
<input type="hidden" name="codigo" value="38"> 
+0

Ich möchte Formular über Javascript senden, weil ich ein Array habe An das PHP-Formular gesendet werden – ruzD

+0

Überprüfen Sie dies wahrscheinlich dann: https://developer.mozilla.org/en/docs/Web/API/FormData/FormData – Danmoreng