这是我做过的AJAX登录。
$(function() {
$('#loginform').submit(function(){
var uname = $('#username').val();
var password = $('#password').val();
$("#loading").show();
$("#loading").fadeIn(400);
$.POST('php/authorization.php', (username: uname, password: password),
function(asd) {
if(asd.success){
location.href = asd.redirect;
}else{
$('.error').html(asd.message);
};
}, 'json');
return false;
});
});
和PHP代码段
if($data = mysql_fetch_assoc($raw))
{
$_SESSION['loggedin'] = true;
$_SESSION['uid'] = $data['u_id'];
$_SESSION['uname'] = $data['u_name'];
$_SESSION['utype'] = $data['u_type'];
$_SESSION['uactive'] = $data['u_active'];
mysql_close($link);
$asd['success'] = true;
$asd['redirect'] = '../dashboard.php';
}
else
{
mysql_close($link);
$asd['success'] = false;
$asd['message'] = "Wrong username or password";
}
echo json_encode($asd);
问题是,PHP不是重定向或执行任何操作,而是打印{"success":true,"redirect":"..\/dashboard.php"}
。
为什么呢?提前谢谢。
答案 0 :(得分:1)
尝试更改:
$.POST('php/authorization.php', (username: uname, password: password), ...
要
$.post('php/authorization.php', {username: uname, password: password}, ...
我认为您发生的事情是这些错误会阻止javascript运行,因此return false;
永远不会被执行,而您的表单只会定期提交。