使用ajax登录无法正常工作

时间:2014-05-01 02:54:54

标签: php jquery mysql ajax

这是我的HTML

 <div id="stylized" class="myform">
        <form action="index.php" method="post" class="formPadd">
            <div align="right">
            <fieldset class="FloatLeft">

            </fieldset>
            <fieldset class="FloatRight" style="padding-right:14px;">
                <div style="height:40px; line-height:30px; text-align:center;">
                    <label>Username:</label><br>
                    <input class="inputbox" type="text" style="text-align:center; padding-right:14px;" name="uname" value maxlength="50">
                </div><br><br>
                <div style="height:30px; line-height:30px; text-align:center;">
                    <label align="center">Password:</label>
                    <input class="inputbox" type="password" name="pass" style="text-align:center; padding-right:14px;" value maxlength="50"><br><br>
                </div><br>                      
                <div>

                <button id="login" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" role="button" aria-disabled="false">
                    <span class="ui-button-text">Login</span>
                </button> 
                </div>
            </fieldset>
            </div>
        </form>
    </div>
</div>  

并且继承我的php

<?PHP
include("db.classes.php");
$g = new DB();
$g->connection();   

    if($_POST)
        {
            $un = $g->clean($_POST["username"]);
            $pw = $g->clean($_POST["password"]);
            $g->login($un, $pw);
        }

$g->close();    

&GT;

这是我的db.classes

ublic function login($un, $pw)
    {
        $result = mysql_query("select username, password from admin where username='$un' and password='$pw'");

        $data = $this->getResults($result);
        $uName = $data["username"];
        $password = $data["password"];

        if($uName === $un && $password === $pw)
        {
            echo ('Correct');
        }

        else
        {
            echo 'Incorrect username/password';
        }
    }

这是我的ajax请求

$( "#login" ).button().click(function( event ) {

    event.preventDefault();
    var un = $("input[name=uname]").val();
    var pw = $("input[name=pass]").val();
    var dataString = 'username='+ un + '&password='+ pw;

    $.ajax({
    type: "POST",
    url: "processLogin.php",
    data: dataString,
    success: function(){
    if (data === 'Login') {
            window.location.replace('list.php');
        }
        else {
            alert('Invalid Credentials');
        }
    }
    });
  });

我已经检查了我的sql staments是否应该责备但是他们没事。我认为我的问题出在ajax请求的某处,但我似乎无法指出它。

1 个答案:

答案 0 :(得分:0)

你需要缩小问题的确切位置,但我要改变的第一件事是你在javascript中构建查询字符串的方式。我不确定如果你直接发送数据字符串是否被正确编码,所以我会使用jQuery来确保它(例如你的密码包含有趣的字符)。

除此之外,您没有在javascript中使用从ajax请求发回的数据:

$.ajax({
    type: "POST",
    url: "processLogin.php",
    data: $('form.formPadd').serialize(),
    //    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ serialize your form
    success: function(data){
    //                ^^^^ get the data
      if (data === 'Correct') {
      //            ^^^^^^^ this is what you echo in php
        window.location.replace('list.php');
      } else {
        alert('Invalid Credentials');
      }
    }
});

您还必须在php中更改表单字段或POST变量的名称,以便它们再次匹配。

作为旁注,如果您要在javascript中重定向到另一个页面,那么首先使用ajax没有多大意义。