【问题标题】:JQuery Ajax request does not send informationJQuery Ajax 请求不发送信息
【发布时间】:2015-06-27 06:37:01
【问题描述】:

我的问题在于我的登录页面,我知道这没什么特别的,这是出于测试目的。我的错误是一旦我输入我的详细信息,它应该将它们发送到服务器以使用数据库验证它们,然后将我重定向到下一页。

我知道服务器端代码可以正常工作,因为我已经使用 Postman 进行了测试,它返回 true。我认为当我调用 $srvmsg 时出现问题,这是因为每次点击提交时都会向我发送错误消息“错误用户名和密码不正确”。

我的代码:

<div class="container">

    <fieldset>
    <legend>Login</legend>
    <h2 class="form-signin-heading">Please sign in</h2>
            <br>
        <label for='username' class="sr-only">Username:</label>
        <input class="form-control" type='text' name='username' id='username'  maxlength="50" placeholder="Username" />
            <br>
        <label for='password' class="sr-only" >Password*:</label>
        <input class="form-control" type='password' name='password' id='password' maxlength="50" placeholder="Password"/>
            <br>
        <input class="btn btn-lg btn-primary btn-block" type='button' name='submit' id="submission" value='Submit' />

    </fieldset>

<!-- //container  -->
</div> 
<script type="text/javascript">

$(function(){
$("#submission").click(function(){
    var $id = $("#username").val();
    var $pass = $("#password").val();
    var $msg = "";
    var $srvmsg = "";
    if($.trim($id).length === 0 ) $msg+="- Username is requried\n";
    if($.trim($pass).length === 0 ) $msg+="- Password is required\n";
    if($msg === ""){
        $srvmsg = $.ajax({
           type : 'post',
           async : false,
           data : {
               "username" : $id,
               "password" : $pass
           },
           url : "http://localhost/login"
           }).done(function(data){
           if(data.loggedIn === true){
               window.location = "http://localhost/my-app/www/home.html";
           } else {
               alert("Error Username and Password Incorrect");
           }
        });

    } else {
        alert("Errors on the form : \n"+$msg);
    }
 });
});
</script>

为了帮助,这也是我的服务器端代码,我已经对此进行了测试,但希望它可以更好地了解问题所在。

服务器端代码:

session_start();
if(isset($_POST)){
$username =  $_POST['username'];
$password =  $_POST['password'];
$msg = array();
if ($username&&$password){
    $connect = mysql_connect("127.0.0.1:8889","root","root") or die ('Couldnt Connect!!');
    mysql_select_db("AppDatabase") or die ('Couldnt find DB');
    $query = mysql_query("SELECT * FROM users WHERE username = '$username'");
    $numrows = mysql_num_rows($query);

    if($numrows !=0)
    {
        while($row = mysql_fetch_assoc($query))
            {
                $dbusername = $row['username'];
                $dbpassword = $row['password'];
                $_SESSION['clientid'] = $row['user_id'];
            }

        if($username==$dbusername&&$password==$dbpassword)
            {
                $_SESSION["loggedIn"] = true;
                $msg['loggedIn'] = true;
                $msg['client_id'] = $_SESSION['clientid'];
                $msg['message'] = "welcome!";

            } else {
                $msg['client_id'] = false;
                $_SESSION["loggedIn"] = false;
                $msg['loggedIn'] = false;
            };
    }else{
        $msg['message'] = 'Username or Password entered incorrectly';
    }
} else {
     $msg['message'] = 'You have not entered username or password';
}
echo json_encode($msg);  
}

更新

我添加了type : 'post',,但我仍然收到同样的错误。我不确定是否正在传递 $srvmsg 用户名和密码。

感谢您的宝贵时间。

【问题讨论】:

  • 使用数据类型:“POST”,
  • 不幸的是我添加了type: 'post' 它仍然给我同样的错误。通过一些测试我不确定用户名和密码是否被传递到 $srvmsg 因此服务器端不会发生任何事情然后给我错误消息因为loggedIn will = false。
  • 危险:您使用的是an obsolete database API,应该使用modern replacement。您也容易受到SQL injection attacks的影响,现代 API 可以让您更轻松地从 defend 中获得。
  • 除了认识到 Ajax 函数的错误分支正在触发之外,您还需要进行一些调试。查看浏览器的开发者工具。查看 JavaScript 控制台。它是否报告任何错误?查看“网络”选项卡。是否正在提出请求?它得到回应了吗?它们是否包含您期望的数据?
  • 嘿@Quentin 我在我的系统的其余部分使用不同的连接这是一个快速模拟来测试如何登录谢谢你提到。此外,我仍在调试该问题,只是希望有人可能遇到相同的问题或可以发现我缺少的问题。

标签: javascript php jquery ajax session


【解决方案1】:

从jQuery ajax documentation开始使用type: 'post'

【讨论】:

  • 是的,我忘记了引号。现在添加它们。
  • 谢谢你的帮助,我也错过了添加datatype : json,它整理了来自数据库的数据。
猜你喜欢
  • 2017-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-25
  • 1970-01-01
  • 2016-10-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多