2016-03-30 32 views
-1

Bir html formu kullanarak bir kullanıcı hesabına giriş yapmayı deniyorum, AJAX ve PHP ile saatler için çözümler aradılar ama hiçbir şey bulamadılar. AJAX ve php için yeniyim, birisi bana yardım ederse çok isterim! Bu sunucusuna (WAMP) isteği gönderiyor ancak bir yanıt geri göndermez ..html5, AJAX ve PHP kullanarak giriş yapılamıyor

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> 


tüm
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

? Yani istek zaman aşımına mı? – Chris

+0

Evet, nasıl düzelteceğim lütfen, saatlerce üzerine takıldınız! – jessmh1

+0

PHP'nin yürütme süresi sınırına ulaşmadan önce zaman aşımına uğrama isteği oldukça sıradışı olurdu ama sanırım yapılandırmanıza bağlı olarak mümkündür. Kodunuza günlük ifadeleri eklerim ve hangi hattın işlemi kilitlediğini anlamaya çalışırdım. Tahmin etmem gerekirse, ya MySQL bağlantısı ya da sorgu olduğunu söyleyebilirim, ama gerçekten olmamalı. – Chris

cevap

0

Öncelikle, JavaScript doğru bir atama değildir AJAX çağrısı için geri arama. Kullanılır:

loginAccountRequest.onreadystatechange = insertStock; //no parentheses 

İkincisi, PHP'niz hiçbir şeyle yanıt vermiyor. PHP kodu sonunda bu koyun:

echo $errorMessage; 

Üçüncü olarak, geri arama kodu düzgün response kontrol etmez. Bunun yerine 0 veya 1 için kontrol etme gereğini yapın:

if (response !== "logged on ") 
    thediv.innerHTML = "Sorry please try again.."; 
else 
    stockShort(); 
O bir yanıt geri göndermez
+0

Yapmak istediğin şeyi yaptıktan sonra hala cevap yok mu? – jessmh1

+0

"readyState == 4" ve "status == 200" kontrollerini kaldırmayı deneyin ve ardından bir yanıt alıp almadığınızı görün. Çıktısını ve kodun nerede durduğunu görmek için yürüttüğü kadar çok değişkenleri günlüğe kaydedin. – 4castle

+0

Yanıt işlevinde durması insertStock() – jessmh1

İlgili konular