2016-03-30 10 views
-1

Ich versuche mich mit einem HTML-Formular in ein Benutzerkonto einzuloggen, mit AJAX und PHP habe ich stundenlang nach Lösungen gesucht, aber nichts gefunden. Ich bin neu in AJAX und php, also würde es mir gefallen, wenn mir jemand helfen könnte !! Die Anforderung sendet an den Server (WAMP), aber eine Antwort nicht zurückschicken ..Ich kann mich nicht mit html5, AJAX und PHP einloggen

hthml5 form 

<div id="Text"> 

<form action="JavaScript:loginAccount()" id="loginForm"> 
<h1>Login into My Account</h1> 
Username:<input id="username" type = "text" value="" /><br><br> 
Password:<input id="password" type = "text" value="" /><br><br> 
<div class="buttons"> 
<input type="submit" id="" value="Login" /> 
<input type="button" id="" value="Cancel" onclick="returnMain()"/> 
</div> 
</form> 


AJAX Request to the php file 

var loginAccountRequest = new XMLHttpRequest(); 

function loginAccount() { 
var url = "login.php"; 
var userName = document.getElementById("username").value; 
var passWord = document.getElementById("password").value; 
loginAccountRequest.onreadystatechange = insertStock(); 
loginAccountRequest.open("POST", url, true); 
loginAccountRequest.setRequestHeader("Content-type", "application/x- www-form-urlencoded"); 
loginAccountRequest.send("user="+userName+"&pass="+passWord); 
} 

AJAX response from the server 

function insertStock() { 
if (loginAccountRequest.readyState == 4) { 
if (loginAccountRequest.status == 200) { 
var response = loginAccountRequest.responseText; 
var thediv = document.getElementById("Text"); 
if(response==0){ 
thediv.innerHTML = "Sorry please try again.." 
} 
if(response==1){ 
stockShort(); 
} 
} 
} 
} 

php file 

<?php 
$uname = ""; 
$pword = ""; 
$errorMessage = ""; 
$num_rows = 0; 
if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
} 

$link = mysqli_connect('localhost', 'username', 'password','database'); 


//Grab User submitted information 
$users = $_POST['user']; 
$passwd = $_POST['pass']; 
$sql = "SELECT * FROM users WHERE username = $users AND password = $passwd"; 
$result = mysqli_query($link,$sql); 

if ($result) { 
} 
else { $errorMessage = "Error logging on"; 

} 
$num_rows = mysql_num_rows($result); 

if ($num_rows > 0) { 

$errorMessage= "logged on "; 

}else { 
$errorMessage= "Invalid Logon"; 
} 
mysqli_close($link); 
?> 
+1

Es keine Antwort zurückschicken? Also ist die Anfrage Timeout? – Chris

+0

Ja, wie repariere ich es bitte, steckte seit Stunden darauf !! – jessmh1

+0

Es wäre ziemlich ungewöhnlich für die Anfrage, die Zeit zu überschreiten, bevor das Ausführungszeitlimit von PHP erreicht wird, aber ich denke, das ist abhängig von Ihrer Konfiguration möglich. Ich würde Ihrem Code Logging-Anweisungen hinzufügen und versuchen, herauszufinden, welche Zeile den Prozess blockiert. Wenn ich raten müsste, würde ich sagen, dass es entweder die MySQL-Verbindung oder die Abfrage ist, aber das sollte wirklich nicht passieren. – Chris

Antwort

0

Zunächst einmal in Ihrem JavaScript sind Sie nicht richtig ein Zuweisen Rückruf für den AJAX-Anruf. Verwendung:

loginAccountRequest.onreadystatechange = insertStock; //no parentheses 

Zweitens Ihre PHP reagiert nicht mit irgendetwas. Setzen Sie diese am Ende Ihres PHP-Code:

echo $errorMessage; 

Drittens Ihr Rückruf-Code nicht richtig die response nicht überprüft. Statt für 0 oder 1 zu prüfen, tun:

if (response !== "logged on ") 
    thediv.innerHTML = "Sorry please try again.."; 
else 
    stockShort(); 
+0

Nachdem Sie getan haben, was Sie erwähnt haben, immer noch keine Antwort? – jessmh1

+0

Versuchen Sie, die Überprüfung für 'readyState == 4' und' status == 200' zu entfernen und sehen Sie, ob Sie dann eine Antwort erhalten. Geben und protokollieren Sie so viele Variablen wie möglich, während der Code ausgeführt wird, um zu sehen, wo er stoppt. – 4castle

+0

Es stoppt bei der Antwortfunktion insertStock() – jessmh1

Verwandte Themen