我是使用Javascript的新手,我想要做的是向php页面提交用户名和密码,然后检查它们是否存在于数据库中,以及它们是否加载了不同的页面。
目前,当我提交表单时,它返回值false。但是,如果我将值添加到php页面,则返回true。
所以我认为我必须在ajax和php之间遇到问题,但我无法看到我哪里出错了所以任何建议都会受到赞赏。
当我在chrome开发人员工具中运行代码时,控制台会显示以下警告:
event.returnValue
已弃用。请改用标准event.preventDefault()
。
但我不确定它与它有什么关系,进行谷歌搜索似乎只是一个警告,但我没有看到任何其他警告。
HTML表单
<label id="errorMessage"></label>
<form method="post" class="login">
<input name="username" type="text" placeholder="Username"/>
<input name="password" type="password" placeholder="Password"/>
<input type="submit" name="login" class="login" value="Login" id="orange"/>
</form>
Ajax
$(document).ready(function(){
$('form.login').submit(function () {
var username = $(this).find('.username').attr('value');
var password = $(this).find('.password').attr('value');
// ...
$.ajax({
type: "POST",
url: "login.php",
data: "username="+ username +"& password="+ password,
success: function(response){
if(response == 'true')
{
window.location.href='main.html';
}
else
{
$("#errorMessage").html(response);
}
}
});
return false;
});
});
PHP
$username = mysql_real_escape_string($_POST['username']);
$password = md5(mysql_real_escape_string($_POST['password']));
if(!empty($username) && !empty($password))
{
$result = mysql_query("SELECT * FROM users WHERE username='$username' and password ='$password'");
$num_rows01 = mysql_num_rows($result);
if($num_rows01 === 1)
{
echo 'true';
}
else
{
echo 'false';
}
}
答案 0 :(得分:0)
您没有任何名为username
和password
的课程。所以它不会检索这些值。
改变这个:
var username = $(this).find('.username').attr('value');
var password = $(this).find('.password').attr('value');
要:
var username = $("[name='username']").val();
var password = $("[name='password']").val();
注意:在客户端检索密码很危险,而且您的网站很有可能被黑客入侵。所以这种方法非常不安全,建议您使用正常的表单提交