即使细节正确,Ajax登录也会返回错误的详细信息

时间:2014-01-27 21:09:09

标签: javascript php jquery ajax

我是ajax,jQuery和JavaScript的新手,这对我自己来说更像是一种学习练习,可以学习一些技巧。我想离开作为单独页面的登录页面(即将数据发送到login.php然后重定向到登录部分的loginForm.php)并想要向下移动jQuery ajax路径。

我构建了我的索引页面如下:

<form id="login_form">
    <h1>Login Form</h1>
    <div>
        <input type="text" placeholder="Username" required="" id="user_name"  name="user_name"/>
    </div>
    <div>
        <input type="password" placeholder="Password" required="" id="password"  name="password"/>
    </div>
    <div class="err" id="add_err"></div>
    <div>
        <input type="submit" value="Log in" id="login"  />
    </div>
</form> 

我已经设置了我的JavaScript:

$("#login").click(function(){
    username=$("#user_name").val();
    password=$("#password").val();
    console.log(username + " " + password);
    var info = {username:username, password:password};
    console.log(info);
    var sub = $.ajax({
        async: false,
        type: "POST",
        url: "login.php",
        data: info,
        success: function(html){
        if(html=='true')
        {
            $("#login_form").fadeOut("normal");
        }
        else
        {
            $("#add_err").html("Wrong username or password");
        }
    },
    beforeSend:function()
    {
         $("#add_err").html("Loading...")
    },
    error: function(response) { console.log(response); }
    });
    console.log(sub);
    return false;
});

当我console.log(info)时,它在日志中告诉我这是一个对象,它有我需要发送的信息。所以我相信这部分到目前为止还可以。以下脚本是我的login.php:

<?php
include('secure.php'); // includes PDO database connection here

$username = $_POST['username'];
$password = $_POST['password'];

$sel = $db->prepare("SELECT * FROM aaUsers WHERE username='$username' AND password='$password'");
$sel->execute();
$count = $sel->rowCount();
    if ( $count >= 1) {
        echo "true";
    }
    else
    {
        echo "false";
    }
?>

信息传递到此处然后运行此脚本,但是,当我console.log(sub)时,我可以看到responseText = ""并且这导致我的脚本进行故障转移。有人能告诉我我哪里出错了,我觉得我做的一切都正常,只是在某个地方我似乎出错了。

2 个答案:

答案 0 :(得分:0)

您使用的是chrome还是firefox(使用firebug)?打开开发人员控制台,观察AJAX调用返回的内容。如果它在那里是空白的,那么当scrowler放好时,你的php是错误的。您还可以创建一个快速的非ajax测试表单,以便以两种方式发布这两个变量。

<html>
<body><form action=login.php method=post><input name=username/> <input name=password/> <input type=submit></form></body></html>

填写空白并点击提交。

答案 1 :(得分:0)

我的坏。

原来我打过电话:

$sel = $db->prepare(...);

而不是:

$sel = $conn->prepare(...);

现在工作正常,感谢您查看我的PHP脚本的建议。