表单仍然使用preventDefault重定向到PHP

时间:2013-12-11 16:07:51

标签: php jquery html ajax

编辑:

这与我的Javascript中其他地方的拼写错误有关。我忘记检查Javascript控制台了。感谢您的评论。

这是我在这个网站上的第一篇文章。我已经阅读了很长一段时间了。

我正在使用jQuery,AJAX和PHP登录表单。好几次,我遇到了问题,我被重定向到PHP页面,在那里我看到了我想要返回的回显数据。我试图解决这个问题,但我被困住了。

编辑:

我确实包含了jQuery:

<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<script src="http://malsup.github.com/jquery.form.js"></script>

HTML:

<form name="login" id="loginForm" action="login.php" method="post">
    <label for="usernameInput">Username: </label>
    <input type="text" name="usernameInput" id="usernameInput" placeholder="Username" autofocus required>
    <label for="passwordInput">Password: </label>
    <input type="password" name="passwordInput" placeholder="Password" required>
    <input type="submit" name="loginSubmit" value="Log In">
</form>

jQuery的:

function login () {
    $('#loginForm').on('submit', function(e){
        e.preventDefault();

        var formObject = $(this);
        var formURL = formObject.attr("action");

        $.ajax({
            url: formURL,
            type: "POST",
            data: formObject.serialize(),
            dataType: 'json',
            success: function(data)
            {
                $("#loginDiv").remove();
                if(data.new) {
                    $("#setupDiv").show();
                } else {
                    statusUpdate();
                                   /* EDIT: Changed from dummy text 'continue()' */
                }
            },
            error: function(jqXHR, textStatus, errorThrown)
            {
                $("#loginDiv").append(textStatus);
            }
        });

    });

}

呼叫:

    $(document).ready(function() {
        login();
    });

PHP:

// Main
if (isset($_POST['usernameInput'], $_POST['passwordInput']))
{

  require "hero.php";

  // Starts SQL connection
  $sql = getConnected();
  $userArray = validateUser($sql);

  if ( $userArray['id'] > 0 ) {

    sessionSet($userArray);

    $userArray['user'] = (array) unserialize($userArray['user']);
    $userArray = json_encode($userArray);
    echo $userArray;

    exit();
  }
  else
  {
    echo 'Username does not exist';
  }
}
else 
{
  echo "Please enter a username and password.";
}

我知道我没有包含所有内容,但这是输出:

{ “ID”: “11”, “名称”: “st5ph5n”, “新”:真, “用户”:[FALSE]}

所以$ userArray的所有内容都按预期工作。为什么这不会留在index.html而是重定向到login.php?

感谢您的回复。

0 个答案:

没有答案