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

标签 javascript php jquery ajax authentication

我有这个代码:

<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;
    }

这是登录.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';
    }
?>

当我单击“登录”时,页面似乎会重新加载或至少更新。没有错误,但也没有成功。因为我一生都无法弄清楚出了什么问题。我们将不胜感激。

最佳答案

编辑: 我已经获取了你的代码并对其进行了一些处理。这是我发现的:

首先 - 表单提交后您的页面会刷新,对吧? 您必须禁用默认表单提交事件,例如如下所示:

$("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(responce) - 对我来说更容易调试

关于javascript - 通过AJAX登录,没有错误但没有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24952887/

相关文章:

javascript - Google Map 未显示,而 map 是所有元素的控制台(在 Bootstrap 模式上)

javascript - 使用 Google 和 Jquery 进行地理编码

Javascript如何在使用变换矩阵数据时考虑变换原点

javascript - 在 angular.js 中切换类和文本

javascript - 单击图像时更改图像 src 和 id(播放/暂停按钮)

PHP OOP 方法困难

javascript - 带有选择器的 jQuery .remove() 不起作用

javascript - AngularJS + RequireJS 模块定义

php - 自动捕获 PHP 中 PDO 的异常

php - 在sql语句中使用php $_SESSION