尝试使用AJAX创建登录表单,这样页面就不必更改就可以登录用户了。到目前为止,我在使用我发现的教程后有以下内容但是我有问题,表单是重新加载页面而不是调用JavaScript函数。
HTML:
<form class="login-form" onSubmit="check_login();return false;">
<input type="text" name="email" placeholder="Email">
<input type="password" name="password" placeholder="Password">
<button type="submit" class="btn trans login-button">Login</button>
</form>
PHP:
// Retrieve login values from POST variables
$email = strip_tags($_POST['email']);
$password = strip_tags($_POST['password']);
// Salt and hash password for database comparison
$password = saltHash($password);
// Check that both fields are not empty
if(!empty($email) || !empty($password)) {
// Query database to check email and password match entry
$database->query('SELECT * FROM users WHERE email = :email AND password = :password');
$database->bind(':email',$email);
$database->bind(':password',$password);
$result = $database->single();
if(!empty($result)) {
// Check entered details match the database
if($email == $result['email'] && $password == $result['password']) {
// If login details are correct, return 1
echo '1';
}
}
else {
// If not returned results, return 2
echo '2';
}
}
else {
// If either fields are empty, return 3
echo '3';
}
JavaScript / jQuery:
// Login function
function check_login() {
$.ajax({
type: 'POST',
url: 'check-login.php',
data: 'email=' + $('input[value="email"]').val() + '&password=' + $('input[value="password"]').val(),
success: function(response){
if(response === '1') {
alert('Log In Success');
}
else if(response === '2') {
alert('Incorrect Details');
}
else if(response === '3') {
alert('Fill In All Fields');
}
}
});
}
非常感谢任何帮助。
答案 0 :(得分:1)
使用这个兄弟......
<form id="F_login" class="login-form">
<input type="text" name="email" placeholder="Email">
<input type="password" name="password" placeholder="Password">
<button id="btn_login" type="submit" class="btn trans login-button">Login</button>
</form>
$("#btn_login").click(function(){
var parm = $("#F_login").serializeArray();
$.ajax({
type: 'POST',
url: 'check-login.php',
data: parm,
success: function (response) {
if(response === '1') {
alert('Log In Success');
}
else if(response === '2') {
alert('Incorrect Details');
}
else if(response === '3') {
alert('Fill In All Fields');
}
},
error: function (error) {
alert("Login Fail...");
}
});
});
else if(response === '3') {
alert('Fill In All Fields');
}
}
});
}
它应该运行良好......
答案 1 :(得分:0)
试试这个:
<form class="login-form">
<input type="text" name="email" placeholder="Email">
<input type="password" name="password" placeholder="Password">
<button class="btn trans login-button" onclick="check_login()">Login</button>
</form>
当登录提交时,它仍会尝试重新加载页面,因此您应该删除提交类型并将登录功能放在按钮上
答案 2 :(得分:0)
通过标签附加事件监听器不是一个好习惯,使用jQuery它更简洁。
尝试这样做:
$("form.login-form .login-button").click(function(e) {
e.preventDefault();
check_login();
});
请记住删除此内容:
onSubmit="check_login();return false;
答案 3 :(得分:0)
声明check_login();return false
不起作用。您必须在函数内调用return check_login();
和return false
。
<form onsubmit="return check_login();">
<!-- input fields here -->
</form>
function check_login() {
// Do your ajax call.
return false;
}
答案 4 :(得分:0)
正确的方法是:
HTML代码:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
// Login function
$(function() {
$('.login-button').click(function(e) {
e.preventDefault();
$.ajax({
type: 'POST',
url: 'check-login.php',
data: $('form.login-form').serialize(),
success: function(response) {
if (response === '1') {
alert('Log In Success');
} else if (response === '2') {
alert('Incorrect Details');
} else if (response === '3') {
alert('Fill In All Fields');
}
}
});
});
})
</script>
<title>Ajax Login Form (Demo)</title>
</head>
<body>
<form class="login-form" name="login-form" method="POST" action="">
<input type="text" name="email" placeholder="Email" />
<input type="password" name="password" placeholder="Password" />
<button type="submit" class="btn trans login-button">Login</button>
</form>
</body>
</html>
在
中写下你的ajax代码
$(document).ready(function(){
//
}); or
$(function(){
//
});
用户阻止默认设置停止提交表单
您可以使用&#39;序列化&#39;制作POST婴儿车的功能。
答案 5 :(得分:0)
有很多方法可以做到这一点: 在索引中写下这段代码:
<a href="www.yourdomain.com" id="link_reload" style="display:none;">index</a>
在javascript中使用“eval
”函数而不是“alert”来显示结果
这意味着当您的PHP代码接收到真正的输入并且数据库中有一个用户(如输入)时,PHP代码回显javascript命令(下面是您向其发送ajax请求的PHP代码):&gt;
<?php if(response==1){
echo '$("link_reload").trigger("click");';
} ?>
并在你的javascript中使用evel()而不是alert()
答案 6 :(得分:0)
删除按钮类型并在其上使用onclick处理程序,而不是在表单上。
当意外按下回车键时自动提交的情况也会处理。
快乐编码!!!
答案 7 :(得分:-1)
尝试将输入类型从“提交”更改为常规按钮,其onclick操作将调用check_login()