0

このコードの何が問題なのかわかりません。

ユーザー名とパスワードをサーバーに送信するだけで、サーバーは応答を返します。サーバーは問題なくデータベースに書き込みますが、クライアント側では時々if(xmlhttp.readyState==4 && xmlhttp.status==200). 行を実行するalert('login5')と、jqueryアニメーションがリセットされます。私はそれがphpの問題であることを知っていますが、なぜそれが機能するのか、機能しないのかわかりません。助けていただければ幸いです。

<script type = "text/javascript">

function sendLogin(){

    var xmlhttp;
    var getString;
    var url = "login.php";

    var username=document.getElementById('name').value;
    var password=document.getElementById('pw').value;
    var url= url+ "?username="+username+"&password="+password;


    if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
    }else{// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.open("get", url , true);
    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

    xmlhttp.onreadystatechange=function(){
        if(xmlhttp.readyState==4 && xmlhttp.status==200){

            alert("reached inside");
            getString = xmlhttp.responseText;
            alert(getString);
        }
    }

    xmlhttp.send();
    alert('login5');
    //problem here, have to wait a while
}

</script>  

html コード:

        <form id="logInBoxes">
            <input type="text" placeholder="username" id='name' size="15px">
            <input type="password" placeholder="pw" id='pw' size="10px">
            <input type="submit" value="Log In" onclick='sendLogin()'>
        </form>

phpコード:

<?php
$username= $_GET['username'];
$password= $_GET['password'];

$salt = mcrypt_create_iv(32, MCRYPT_RAND);
$password = crypt($password, $salt);

$salt = mysql_real_escape_string($salt);
$password = mysql_real_escape_string($password);
$sql = mysqli_connect('localhost','root','','housescale');
// Check connection
if (mysqli_connect_errno()){echo "Failed to connect to MySQL: " . mysqli_connect_error();
}


mysqli_query($sql, "INSERT INTO user (username, password, salt) 
                VALUE 
                ('$username', '$password','$salt')")   or    trigger_error(mysql_error()); 



mysqli_close($sql);

echo $username;


?>

編集:alert('login5')ループでさらに9回実行すると機能します。この遅延修正は正確には何を意味しますか?

4

1 に答える 1