0

我的 AJAX 登录管理代码有什么问题?当我尝试使用我的用户名和密码登录时,它与 PHP 完美匹配,但我的 AJAX 代码根本无法工作!问题是什么?

(注意:我是 jQuery 和 AJAx 的新手)

我有 index.php 的代码:

<html>
    <head><title>Login form</title></head>
    <body>

        <form id="myForm" action="testlogin.php" method="post">
        username: <input type="text" name="username"> <br />
        password: <input type="password" name="password"> <br />
        <button id="submit">Login</button>
        </form>
        <div id="ack"></div>
    <script type="text/javascript" src="jquery-2.0.2.js" ></script>
    <script type="text/javascript" src="testajax.js"></script>

    </body>


</html>

我有 testlogin.php 的代码:

<?php require_once("includes/connection.php"); ?> // starting the session.

<?php

$username = mysql_real_escape_string( $_POST["username"]);
$password = mysql_real_escape_string( ($_POST["password"]));

$sql = "SELECT * FROM users2 WHERE (username='$username' AND password='$password')";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);

if($res === FALSE) {
    die(mysql_error()); // TODO: better error handling
}    

if( $row[0] > 0)
echo "Login Successful";
else
    echo "Failed To Login";
?>

<?php include("includes/footer.php"); ?> //closing the session

最后我有这个 testajax.js 代码:

$ ("button#submit") .click(function() {
   if ( $( "#username") .val() == "" || $( "#password") .val() == "" ) 
    $("div#ack") .html("Please enter both username and password");
    else
$.post ($("#myForm") .attr("action"),
$ ("#myForm :input") .serializeArryay(),
function(data) {
    $("div#ack") .html(data);

});    

   $("#myForm") .submit(function) {
       return false;
   }
});
4

1 回答 1

0

尝试使用这个:

$("#myForm").submit(function(e){
    e.preventDefault();
    if ($('input[name="username"]').val() == "" || $('input[name="password"]').val() == "") 
        $("#ack").html("Please enter both username and password");
    else
        $.post($(this).attr("action"), $(this).serialize())
              .done(function(data) { $("#ack").html(data); })
              .fail(function(jqXHR, textStatus) {
                  alert( "Request failed: " + textStatus );
              });
});

我修复了您的间距(可能在您复制和粘贴时发生)并稍微减少了您的代码。

当您提交表单时,它要么成功并运行,.done(...)要么失败并运行.fail(...)。这应该可以帮助您准确找出脚本失败的地方。

于 2013-06-08T14:44:04.080 回答