ajax登录表单不起作用

时间:2015-01-22 19:16:02

标签: javascript php jquery ajax-request

我试图将用户的信息从mysql传递到网页,如果用户已登录但无法使其工作。如果我输入错误的电子邮件或密码,它将显示错误消息,但如果凭据没问题,它会做任何事情......

在php文件上:

$sql = "SELECT * FROM users WHERE email='$l_email' AND password='$l_password'";
$query = mysql_query($sql) or die ('Error: ' . mysql_error());
$num_rows = mysql_num_rows($query);
if($num_rows < 1)
{
    echo "You have entered a wrong email or password!";
}
else {
$memberInfo = array();
while( $row = mysql_fetch_array( $query ) )
{
    $memberInfo[] = $row;
}
return $memberInfo;
echo json_encode( $memberInfo );
//echo "1";
}

在js文件中:

 $.post("./includes/checkOut.php",{ l_email1: l_email, l_password1: l_password },
          function(data) {
           if(data=='1')
            $("#checkOut_form")[0].reset();
            $("#login_returnmessage").html("");
            $("#memberInfo").hide("");
            var memberInfo = jQuery.parseJSON(memberInfo);
            for( var i in memberInfo )
            {
            var f_name = memberInfo[i].f_name;
            var l_name = memberInfo[i].l_name;
            var phone = memberInfo[i].phone;
            }
            $("#loggedinInfo").show("");
            $('#_f_name').val(f_name);
            $('#_l_name').val(l_name);
            $('#_email').val(l_email);
            $('#_phone').val(phone);
         }
           $("#login_returnmessage").html(data);        
        });

1 个答案:

答案 0 :(得分:1)

如果在函数外使用return,则会在该点终止脚本。这正是你在这里所做的:

return $memberInfo;
echo json_encode( $memberInfo );
//echo "1";

您需要删除return声明。

您还应该在响应中添加Content-type:标头,告诉浏览器期望JSON:

header('Content-type:application/json');
echo json_encode( $memberInfo );

您的Javascript代码正在检查您未发送的值1的响应,因此更新显示的代码将无法执行。

最后:

  • 不存储未加密的密码 - 使用password_hash()
  • 不要使用mysql,因为它已被弃用 - 请使用mysqliPDO
  • 确保在将输入传递给数据库之前转义输入(或者更好,使用预准备语句(mysql_*()不支持)。