2016-11-23 2 views
2

Ich habe alle relativen Fragen hier gesucht und kann immer noch nicht herausfinden, das Problem, das ich habe.Ajax senden Formular serialisierte Daten in PHP sind null

ich eine einfache modale Form bin mit:

 <p id="messages">Let's make today a great day!</p> 
<form id="myloginform" name="myloginform" action="scripts/login.php" method="post" > 
    <div class="form-group"> 
    <label for="username" class="">Enter username</label> 
    <input type="text" class="form-control input-lg c-square" id="username" name="username" placeholder="Username" required> </div> 
    <div class="form-group"> 
    <label for="password" class="">Enter pass</label> 
    <input type="password" class="form-control input-lg c-square" id="password" name="password" placeholder="Password" required> </div> 
    <div class="form-group"> 
    <div class="c-checkbox"> 
    <input type="checkbox" id="login-rememberme" class="c-check"> 
    <label for="login-rememberme" class="c-font-thin c-font-17"> 
    <span></span> 
    </div> 
    </div> 
    <div class="form-group"> 
    <button type="submit" class="btn c-theme-btn btn-md c-btn-uppercase c-btn-bold c-btn-square c-btn-login" id="check">login</button> 

    </div> 

    </form> 

ich Ajax bin mit der Form in eine PHP-Datei weitergeben müssen:

 <script> 
    $(document).ready(function(){ 

      $('form#myloginform').submit(function(e) { 

       var my_data = $('form#myloginform').serialize(); 

       $.ajax({ 
        type  : 'POST', 
        url   : 'scripts/login.php', 
        cache  : false, 
        data  : my_data, 
        contentType : false, 
        processData : false, 
        dataType: 'json', 

        success: function(response) { 
         //TARGET THE MESSAGES DIV IN THE MODAL 
         if(response.type == 'success') { 
          $('#messages').addClass('alert alert-success').text(response.message); 
         } else { 
          $('#messages').addClass('alert alert-danger').text(response.message); 
         } 
        } 
       }); 
       e.preventDefault(); 
      }); 
     }); 
     </script> 

Die login.php-Datei ist sehr einfach und gibt eine json $ output response

<?php 
    $username = $_POST['username']; 
    $password = $_POST['password']; 

    if($username == "Test"){ 
    $success = true; 
    } 

if($success == true) { 
    $output = json_encode(array('type'=>'success', 'message' => $username)); 
} else { 
    $output = json_encode(array('type'=>'error', 'message' => $username)); 
} 

die($output); 
?> 

Die Ausgabe $ gibt in jedem Fall null zurück. Ich habe mit Firebug überprüft, und alles ist OK, keine Fehler, POST perfekt noch kann ich nicht die Variablen in PHP zu arbeiten. Irgendwelche Ideen ??? Ist etwas falsch mit meinem Ansatz oder muss ich die Daten in der PHP-Datei deserialisieren, irgendwie ... ???

+3

Entfernen Sie die Optionen "contentType" und "processData", Sie haben gerade alles deaktiviert, was jQuery verwendet, um das serialisierte Formular in www-urlencodierte Daten zu analysieren, bevor es an den Server gesendet wird. – adeneo

+0

Perfekt, danke !!! – Dions

Antwort

0

Verwenden Sie nicht sterben. Verwenden Sie Echo oder Drucken.
Setzen Sie auch contentType auf true.