问题:当我点击登录时,它总是登录失败。但是,如果我只使用PHP打开HTML文件,它可以正常工作。所以我认为问题是Ajax。 我使用Xampp和PHP 7
这是HTML文件
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="Login.js" ></script>
</head>
<body>
<div class="err" id="errDialog">
</div>
<form action="" method="post" id="login_form">
Username
<input type="text" name="username" id="username" >
Password
<input type="text" name="password" id="password" >
<input type="submit" name="login" id="login" value="Login">
</form>
</body>
</html>
这是Javascript文件
$(document).ready(function() {
$('form').submit(function(event) {
event.preventDefault();
var form = $(this);
$.ajax({
url: './Login.php',
type: 'POST',
dataType: 'script',
data: form.serialize(),
})
.done(function(response) {
if (response == 1) {
$('#errDialog').html("Login success")
} else {
$('#errDialog').html("Login fail")
}
})
这是PHP文件
$con = mysqli_connect('localhost', 'root', '', 'login');
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
if (isset($_POST['login'])) {
$username = mysqli_real_escape_string($con, $_POST['username']);
$password = mysqli_real_escape_string($con, $_POST['password']);
$query = "select * from members where username='$username' AND password='$password'";
$run_query = mysqli_query($con, $query);
$num_rows = mysqli_num_rows($run_query);
if ($num_rows == 1) {
$_SESSION['sesUsername'] = $username;
echo 1;
} else {
echo 0;
}
}
问题解决了。我将提交类型从输入更改为按钮。删除isset('#login')部分,没有必要。并为按钮点击事件重写javascript ajax。