2016-03-30 11 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 

第2に、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

関連する問題