Ошибка аутентификации формы jQuery - PullRequest
0 голосов
/ 07 апреля 2011

Я пробую эту базовую аутентификацию с использованием jQuery.Но ничего не происходит, когда я ввожу неправильное имя пользователя / пароль - не отображается предупреждение и не отображается ошибка метки.

При использовании Firebug в заголовке Response отображается: Login failed{"success":false}, но на самой странице не отображается ошибка.

Даже если имя пользователя / пароль верны, оно не перенаправляетстраница для успешного входа в систему.

HTML:

<section>
    <form id="form" name="form" action="login.php" method="post">  

    <ul>
        <li>
        <span class="er">&nbsp;Error Message</span>
        </li> <br />

        <li>
        <label for="name">Name</label>  
        <input type="text" name="name" id="name" required />       
        </li>

        <li> 
        <label for="pass">Password</label>  
        <input type="password" name="pass" id="pass" required/>  
        </li>

    </ul>
        <input type="submit" value="Log In" />  

</form>  
</section>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script> 
<script type="text/javascript">
    $(document).ready(function() {
        $(".er").hide();
        $('#form').bind('submit', function (e) {
            var self = $(this);

            // See ajax: http://api.jquery.com/jQuery.post
            // See serialize: http://api.jquery.com/serialize()
            jQuery.post(self.attr('action'), self.serialize(), function () {
                if (response.success) {
                    // wooo, logged in
                    window.location.href='home.php';
                } else {
                    $(".er").show();
                    alert("Invalid username or password. Please try again");
                }
            }, 'json');

            e.preventDefault(); //prevent the form being posted 
        });
});
</script>

PHP --login.php:

<?php
include "common/base.php";


include_once "inc/class.users.inc.php";
$users = new Admin($db);
if($users->accountLogin()==TRUE):
      echo "Login Successful " . $_SESSION['Username'];
      echo json_encode(array('success' => true));
      header("Location: home.php");
else:
     echo "Login failed";
     echo json_encode(array('success' => false));
endif;

?>

Ответы [ 2 ]

1 голос
/ 07 апреля 2011

Ничего не происходит, потому что вы не определяете response.Измените то, что вы должны:

jQuery.post(self.attr('action'), self.serialize(), function (response){
0 голосов
/ 07 апреля 2011

Ваша переменная ответа должна быть параметром обратного вызова успеха, например:

jQuery.post(self.attr('action'), self.serialize(), function (response) {
                if (response.success) {
                    // wooo, logged in
                    window.location.href='home.php';
                } else {
                    $(".er").show();
                    alert("Invalid username or password. Please try again");
                }
}, 'json');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...