我有这段代码:
<form name="login" class="login-form" action="" method="post">
<h2>Log In</h2>
<div class="error" style="display:none"></div>
<input type="text" id="login-username" placeholder="Full Name" />
<input type="password" id="login-password" placeholder="Password" />
<button onclick="submitLogin();">Log In</button>
</form>
<script type="text/javascript">
function submitLogin() {
username = $("#login-username").val();
password = $("#login-password").val();
$.ajax({
type: "POST",
url: "login.php",
data: "name=" + username + "&pwd=" + password,
success: function(html) {
if (html == 'true') {
//$("#add_err").html("right username or password");
window.location="dashboard.php";
}
else {
$("#error").css('display', 'inline', 'important');
$("#error").html("<img src='images/alert.png' />Wrong username or password");
}
},
beforeSend: function() {
$("#error").css('display', 'inline', 'important');
$("#error").html("<img src='images/ajax-loader.gif' /> Loading...")
}
});
return false;
}
这是login.php:
<?php
require_once 'config.php';
session_start();
$uName = $_POST['login-username'];
$pWord = md5($_POST['login-password']);
$qry = "SELECT usrid, username, password FROM users WHERE username='".$uName."' AND password='".$pWord."'";
$res = mysql_query($qry);
$num_row = mysql_num_rows($res);
$row = mysql_fetch_assoc($res);
if( $num_row == 1 ) {
echo 'true';
$_SESSION['uName'] = $row['username'];
}
else {
echo 'false';
}
?>
当我点击登录时,页面似乎重新加载或至少更新。没有错误但也没有成功。对于我的生活,不能解决什么错误。非常感谢帮助。
答案 0 :(得分:1)
修改强> 我已经接受了你的代码并且稍微使用了它。这是我发现的:
首先,您的页面在表单提交后会刷新吗? 您必须禁用默认表单提交事件,例如:
$("form").submit(function(ev){
ev.preventDefault();
});
这样做 - 它捕获默认的提交事件,作为'ev'变量,并阻止它被触发。
这会阻止您的网页刷新。
接下来的事情 - 一定要检查你的ajax.url变量 - 它是否真正针对正确文件夹中的正确文件?
其余的代码看起来很好 - 我设法在我的测试中得到了正确的答案。
尝试一下,然后回复一下。
* //以下旧信息*
您发送ajax请求:
$.ajax(
data: "name=" + username + "&pwd=" + password
但是在login.php中你要求POST
$uName = $_POST['login-username'];
$pWord = md5($_POST['login-password']);
这很可能导致一些不和谐。 首先尝试将其更改为:
$uName = $_POST['name'];
$pWord = md5($_POST['pwd']);
另外,将错误处理程序添加到您的ajax请求中:
error: function(responce){
alert(responce);
}
我个人更喜欢console.log(响应) - 更容易为我调试
答案 1 :(得分:0)
<强>更新强> 试试这个(你在脚本中有错误):
function submitLogin() {
username = $("#login-username").val();
password = $("#login-password").val();
$.ajax({
type: "POST",
url: "login.php",
data: "name=" + username + "&pwd=" + password,
success: function(html) {
if (html == 'true') {
//$("#add_err").html("right username or password");
window.location="dashboard.php";
}
else {
$("#error").css('display', 'inline', 'important');
$("#error").html("<img src='images/alert.png' />Wrong username or password");
}
},
beforeSend: function() {
$("#error").css('display', 'inline', 'important');
$("#error").html("<img src='images/ajax-loader.gif' /> Loading...");//error was here
}
});
return false;
}
答案 2 :(得分:0)
很抱歉这可能毫无意义,但我通常会用大写字母来接收值(asp mvc)。
if (html == 'True') ...
如果这是问题所在,那么你的else子句应该正在执行,并且有趣的是你正在使用ID选择器'#error',但是在html代码中错误是类错误,所以选择器应该是'。错误'......它可能不是那个但仍然......