2016-03-30 5 views
-1

Я пытаюсь войти в учетную запись пользователя, используя форму html, а AJAX и PHP потратили часы на поиск решений, но ничего не смогли найти. Я новичок в AJAX и php, поэтому мне хотелось бы, чтобы кто-то помог мне! Он делает отправить запрос на сервер (WAMP), но не отправляет обратно ответ ..Невозможно войти в систему с помощью html5, AJAX и PHP

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

Он не посылает обратно ответ? Итак, запрос истекает? – Chris

+0

Да, так как я могу исправить это, пожалуйста, застрял на нем в течение нескольких часов! – jessmh1

+0

Было бы довольно необычным для запроса тайм-аута перед тем, как нажать на время выполнения PHP, но я предполагаю, что это возможно в зависимости от вашей конфигурации. Я бы добавил в свой код записи регистрации и попытался выяснить, какая строка блокирует этот процесс. Если бы я должен был догадаться, я бы сказал, что это либо соединение с MySQL, либо запрос, но этого не должно произойти. – Chris

ответ

0

Прежде всего, в вашем JavaScript вы не правильно назначая обратный вызов для вызова AJAX. Использование:

loginAccountRequest.onreadystatechange = insertStock; //no parentheses 

Во-вторых, ваш PHP ничего не отвечает. Поместите это в конце вашего PHP кода:

echo $errorMessage; 

В-третьих, ваш код обратного вызова не правильно проверить response. Вместо проверки 0 или 1, сделайте следующее:

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

Выполняя то, что вы упомянули, все еще не ответили? – jessmh1

+0

Попробуйте удалить проверку для 'readyState == 4' и' status == 200' и ​​посмотреть, получите ли вы ответ. Выводите и записывайте столько переменных, сколько вы можете, когда код выполняет, чтобы увидеть, где он останавливается. – 4castle

+0

Его остановки при функции ответа insertStock() – jessmh1

Смежные вопросы