2017-05-09 4 views
0

Ich habe mindestens 20 dieser ähnlichen Fragen gelesen und kann nicht herausfinden, was mit meinem Code nicht stimmt.AJAX empfängt keine POST-Variablen

ich ein Login-Formular haben, wie unten gezeigt:

<div class="login-form"> 
    <form class="login-form-container" action="./" method="post" autocomplete="off"> 
     <input id="login-user" type="text" placeholder="&#xf007; Username"/> 
     <input id="login-pass" type="password" placeholder="&#xf023; Password"/> 
    <div class="login-button-container"> 
     <input id="login-button" type="submit" value="Log in"/> 
    </div> 
    </form> 
</div> 

Mein login.js Skript ist als unten:

$(document).ready(function(){ 
$("#login-button").click(function(e){ 
    var username = $("#login-user").val(); 
    var password = $("#login-pass").val(); 
    $.ajax({url: "../includes/index.php", //.js file is in a diff directory 
     data: {'login':true,'name':username,'pwd':password}, 
     type: "POST", 
     success: function(html) {  
      if (html=='true') { 
      //window.location="dashboard.php"; 
      alert('success'); 
      } 
      else { 
       alert('failure'); 
      } 
     } 
    }); 
    return false; 
    }); 
}); 

Dies soll geschickt ‚index.php, um wieder ', die eine separate PHP-Datei enthält, die die Login-Informationen behandelt. Der Grund dafür ist, dass ich die Seite mit der erfolgreichen Anmeldung des Benutzers ohne Aktualisierung aktualisieren kann.

Meine andere PHP-Datei überprüft wird einfach für die Post-Daten:

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    var_dump($_POST); 
    if (isset($_POST['login']) && $_POST['login']) { 
    } else if (isset($_POST['reg']) && $_POST['reg']) { //this is for registration, which will be used once this login is working 
    } else { 
     echo 'Neither login/reg were set'; 
    } 

Die var Dump zeigt:

array(0) { } 

So werden die Daten nicht empfangen werden. Allerdings erreicht es eindeutig die PHP-Seite. Ich weiß nicht, was los ist, irgendwelche Vorschläge?

Bearbeiten: Ich dachte, ich würde hinzufügen, dass das Hinzufügen einer Warnung an der Spitze von login.js mit dem Benutzernamen/Passwort die eingegebenen Werte drucken. So wird die login.js erreicht, und die Daten sind dort zugänglich. Aber es geht nicht darüber hinaus.

Edit2: Hier ist meine aktualisierte HTML und login.js Code:

index.php:

<form class="login-form-container" action="./" method="post" autocomplete="off"> 
    <input id="login-user" type="text" placeholder="&#xf007; Username"/> 
     <input id="login-pass" type="password" placeholder="&#xf023; Password"/> 
     <div class="login-button-container"> 
      <input id="login-button" type="button" value="Log in"/> 
     </div> 
</form> 

login.js

$(document).ready(function(){ 
    alert(1); 
$("#login-button").click(function(e){ 
    alert(0); 
    //e.preventDefault(); 
    var username = $("#login-user").val(); 
    var password = $("#login-pass").val(); 
    $.ajax({url: "../includes/index.php", 
     data: {'login':true,'name':username,'pwd':password}, 
     type: "POST", 
     success: function(html) {  
      if (html=='true') { 
      //window.location="dashboard.php"; 
      alert('success'); 
      } 
      else { 
       alert('failure'); 
      } 
     } 
    }); 
    return false; 
}); 
}); 
+0

Wie erreicht es die Seite klar, wenn var dump leer ist? – clearshot66

+0

, weil es bestätigt, dass "$ _SERVER ['REQUEST_METHOD'] == 'POST'", einfach das Laden der Indexseite nichts dump..uner ich irre mich darüber? – Gredenko

+0

Irgendwelche Fehler in der Konsole? –

Antwort

-1

bitte ersetzen type: "POST" mit method: "POST"
Sie erwähnte es falsch in jquery ajax-Funktion.

Standard ist "GET", wenn Sie es nicht angeben. Also, wenn Sie sowohl $ _POST & $ _GET überprüft hätten, hätten Sie Ihre Daten in $ _GET gefunden.

try var_dump ($ _ REQUEST) Wenn nichts angezeigt wird, sendet der Client keine Daten an den Server.

überprüfen Sie auch das Netzwerkfenster Ihrer Browser-Entwicklerkonsole. So wissen Sie, welche Daten an den Server übergeben werden.

+0

Aus den Dokumenten. "Ein Alias ​​für Methode. Sie sollten Typ verwenden, wenn Sie Versionen von jQuery vor 1.9.0 verwenden." – Taplar

+0

Ich habe versucht dies, aber nichts änderte sich mit dem Ergebnis. – Gredenko

+0

'type' ist ein Alias ​​für' Methode'. Die Verwendung von 'Methode' ändert nichts in diesem Fall. –

0

Die Lösung wurde auf meinem ändern

$("#login-button").click(function(e){ 

zu

$(document).on("submit",".login-form-container",function(e) { 

, die die Form einreichen behandeln, und dazu gehört auch die Taste sowie treffen enter (ideale Situation).

Jetzt werden die Daten erfolgreich gesendet und ich kann mit der eigentlichen SQL-Anmeldung/Registrierung umgehen, also danke @Ashokkumar M. Prajapati, dass Sie zu dem Schluss gekommen sind, dass das .js-Skript nicht wirklich auf submit feuert (Nicht dass der Rest von dir nicht geholfen hat!)