Я хочу создать простой сайт с логином и, если логин - это определенная строка (eg Andrew) Я хочу, чтобы он запрашивал пароль с помощью JS незамедлительный. После ввода пароля функция ajax проверяет простой файл php для пароля.JS Проверка функции возврата с if, всегда возвращает false
Чтобы понять вещи лучше, вот код:
function login()
{
if (document.getElementById("username").value == "" || document.getElementById("username").value == null)
{
alert("Wrong username... actually empty username :)\nTry again.");
return;
}
if (document.getElementById("username").value == "andrew")
{
var pass = prompt("Password : ", "");
if (pass == "")
{
alert("Your password is empty!\nYou fucked it or you're not really Andrew!");
return;
}
//THIS IF IS ALWAYS GOING IN ELSE
if (check_pass(pass))
{
alert("good password");
return;
}
else
{
alert("wrong");
return;
}
}
setCookie("username", document.getElementById("username").value, 365);
window.location.href = "chat.php";
}
Это функция, которая вызывается после того, как я нажимаю кнопку входа.
Вот функция check_pass, что я использую, чтобы проверить, если это правильный пароль (эта функция работает, но для справки):
function check_pass(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.onreadystatechange = function()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
var checker = xmlhttp.responseText;
//alert(checker);
if (checker.indexOf('1') !== -1)
{
//alert("in true");
return true;
}
else
{
//alert("in false");
return false;
}
}
}
xmlhttp.open("POST", "checkpass.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("password=" + password);
}
В функции check_pass, я я поставил некоторые предупреждения, чтобы проверить, действительно ли я получаю правильные значения, и да, если ответ равен 1, он должен вернуть true, если он равен 0, он должен вернуть значение false. И он это делает. Но ... в функции входа, эта часть кода:
if (check_pass(pass))
{
alert("good password");
return;
}
else
{
alert("wrong");
return;
}
Всегда возвращает ложь.
Я делаю это с 1 часа, и я не вижу, что случилось. Есть идеи ? Я также пробовал с check_pass (pass) === true и check_pass (pass) == true, но он всегда возвращает false.
Любые предложения будут оценены.
Ans: 'check_pass' является вызов функции асинхронной. –
Хммм ... Я действительно не понимаю. – icebox19
@ icebox19 Почему ваш check_pass is async? –