修改
好的,所以我可以正常登录但是当我输入错误信息时我被重定向到登录页面,我需要的是保持在同一页面上并显示错误消息e.preventDefault();
似乎没有工作
$(function() {
$("#login-form").submit(function(e) {
$('.fail').hide();
$.ajax({
url:"/login",
type: "post",
data: $(this).serialize(),
error:function(){
$('.fail').show();
e.preventDefault();
},
success: function(){
document.location = '/';
}
});
return false;
});
});
答案 0 :(得分:4)
你实际上没有对表单做任何事情,请尝试评论你的代码,告诉你发生的事情。
我猜你在这个代码中使用PHP服务器端。
在PHP中,您想要检查用户凭据,然后告诉浏览器。如果登录成功,请发回"y"
,如果失败"n"
。
<script type="text/javascript">
$(function() {
$("#login-form").submit(function() {
$('.fail').hide();
$.ajax({
url:"/login",
type: "post",
data: $(this).serialize(),
error:function(){
$('.fail').show();
},
success: function(data) {
if (data == "y") {
//Login was successful. Redirect statement here?
} else {
//Failed login message here
}
}
});
return false;
});
});
</script>
修改强>
尝试在成功功能中添加此功能。请告诉我您成功登录和登录失败的原因。
success: function(data) {
console.log(data);
}
修改2
这是因为您的ajax调用成功,只是登录失败。这就是调用成功处理程序的原因。
要对此进行排序,您需要查看从服务器返回的内容,是什么?在这种情况下尝试:
success: function(data) {
if (data == "") {
e.preventDefault();
} else {
//Login successful, redirect user.
}
}
答案 1 :(得分:0)
你应该添加:
success: function(data){
/* Validation data here, if authentication answer is correct */
if(data == 'ok')
document.location = '/';
else
/* show error here */
}
答案 2 :(得分:0)
找到并访问URL时会成功
找不到URL时发生错误
如果你想检查回调MSG,你必须在URL页面&amp;检查数据是否成功。
像这样:
<script type="text/javascript">
$(function() {
$("#login-form").submit(function() {
$('.fail').hide();
$.ajax({
url:"/login",
type: "post",
data: $(this).serialize(),
success:function(data){
if(data=="true"){
alert("success");
}else{
alert("faild")
}
}
});
return false;
});
});
</script>
在login.php中
<?php
//check if for true...
echo "true";
//and if it is not true...
echo "false";
?>
成功中的数据参数是一个字符串,用于获取“/ login” 的html内容