2012-07-27 67 views
2

编辑jQuery的AJAX表单提交错误工作的成功不是

好了,我可以登录罚款,但是当我输入虚假信息,我重定向到登录页面,我需要的是保持在同一页上并显示错误消息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; 
    }); 
}); 

回答

3

你实际上没有做任何形式的事情,生病尝试评论你的代码,以通过发生什么事情来谈论你。

我猜你使用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. 
    } 
} 
+0

后端开发者正在使用Java/play for服务器端代码 – 2012-07-27 12:00:00

+0

@ OliMillington您是否可以要求他们发回成功登录的“y”和失败的“n”?它的功能与 – Undefined 2012-07-27 12:01:14

+0

的功能完全一样,直到星期一,我无法联系后端开发人员,我需要尝试今天完成此工作。 – 2012-07-27 12:05:15

0

您应该加上:当URL是发现和访问

success: function(data){ 
    /* Validation data here, if authentication answer is correct */ 
    if(data == 'ok') 
     document.location = '/'; 
    else 
     /* show error here */ 
} 
+0

这个用户名和密码添加到URL像“get”,有没有“后”版本? – 2012-07-27 11:58:41

+0

你在你的问题中使用POST?它不应该显示在网址中。 – Undefined 2012-07-27 11:59:37

+0

这就是我的想法,但是当我测试你的代码时,它做了一个“get”风格提交 – 2012-07-27 12:01:10

0

成功发生。
并且找不到URL时发生错误。
如果要检查回拨MSG,则必须在URL页面&中检查数据是否成功打印。 这样的:

<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"; 
?> 

数据参数成功是一个字符串,返回的HTML内容 “/登录”