通过AJAX登录,没有错误,但没有结果

时间:2014-07-25 09:52:37

标签: javascript php jquery ajax login

我有这段代码:

<form name="login" class="login-form" action="" method="post">
    <h2>Log In</h2>
    <div class="error" style="display:none"></div>
    <input type="text" id="login-username" placeholder="Full Name" />
    <input type="password" id="login-password" placeholder="Password" />
    <button onclick="submitLogin();">Log In</button>
</form>

<script type="text/javascript">
    function submitLogin() {
        username = $("#login-username").val();
        password = $("#login-password").val();
        $.ajax({
            type: "POST",
            url: "login.php",
            data: "name=" + username + "&pwd=" + password,
            success: function(html) {    
                if (html == 'true') {
                    //$("#add_err").html("right username or password");
                    window.location="dashboard.php";
                }
                else {
                    $("#error").css('display', 'inline', 'important');
                    $("#error").html("<img src='images/alert.png' />Wrong username or password");
                }
            },
            beforeSend: function() {
                $("#error").css('display', 'inline', 'important');
                $("#error").html("<img src='images/ajax-loader.gif' /> Loading...")
            }
        });
        return false;
    }

这是login.php:

<?php
    require_once 'config.php';

    session_start();
    $uName = $_POST['login-username'];
    $pWord = md5($_POST['login-password']);
    $qry = "SELECT usrid, username, password FROM users WHERE username='".$uName."' AND password='".$pWord."'";
    $res = mysql_query($qry);
    $num_row = mysql_num_rows($res);
    $row = mysql_fetch_assoc($res);
    if( $num_row == 1 ) {
        echo 'true';
        $_SESSION['uName'] = $row['username'];
    }
    else {
        echo 'false';
    }
?>

当我点击登录时,页面似乎重新加载或至少更新。没有错误但也没有成功。对于我的生活,不能解决什么错误。非常感谢帮助。

3 个答案:

答案 0 :(得分:1)

修改 我已经接受了你的代码并且稍微使用了它。这是我发现的:

首先,您的页面在表单提交后会刷新吗? 您必须禁用默认表单提交事件,例如:

$("form").submit(function(ev){
  ev.preventDefault();
});

这样做 - 它捕获默认的提交事件,作为'ev'变量,并阻止它被触发。

这会阻止您的网页刷新。

接下来的事情 - 一定要检查你的ajax.url变量 - 它是否真正针对正确文件夹中的正确文件?

其余的代码看起来很好 - 我设法在我的测试中得到了正确的答案。

尝试一下,然后回复一下。

* //以下旧信息*

您发送ajax请求:

$.ajax(
  data: "name=" + username + "&pwd=" + password

但是在login.php中你要求POST

$uName = $_POST['login-username'];
$pWord = md5($_POST['login-password']);

这很可能导致一些不和谐。 首先尝试将其更改为:

$uName = $_POST['name'];
$pWord = md5($_POST['pwd']);

另外,将错误处理程序添加到您的ajax请求中:

error: function(responce){
    alert(responce);
}

我个人更喜欢console.log(响应) - 更容易为我调试

答案 1 :(得分:0)

<强>更新 试试这个(你在脚本中有错误):

function submitLogin() {
        username = $("#login-username").val();
        password = $("#login-password").val();
        $.ajax({
            type: "POST",
            url: "login.php",
            data: "name=" + username + "&pwd=" + password,
            success: function(html) {    
                if (html == 'true') {
                    //$("#add_err").html("right username or password");
                    window.location="dashboard.php";
                }
                else {
                    $("#error").css('display', 'inline', 'important');
                    $("#error").html("<img src='images/alert.png' />Wrong username or password");
                }
            },
            beforeSend: function() {
                $("#error").css('display', 'inline', 'important');
                $("#error").html("<img src='images/ajax-loader.gif' /> Loading...");//error was here
            }
        });
        return false;
    }

答案 2 :(得分:0)

很抱歉这可能毫无意义,但我通常会用大写字母来接收值(asp mvc)。

if (html == 'True') ... 

如果这是问题所在,那么你的else子句应该正在执行,并且有趣的是你正在使用ID选择器'#error',但是在html代码中错误是类错误,所以选择器应该是'。错误'......它可能不是那个但仍然......