Вернуть ложный успех в $ .ajax jQuery - PullRequest
2 голосов
/ 22 июля 2011

Я использую jQuery версии 1.6.2 и не могу перенаправить своих пользователей на главную страницу после входа в систему.На самом деле я могу, но если я сделаю это, я не смогу отобразить «сообщения об ошибках».

Можете ли вы мне помочь?

Мой код jQuery:

$(".enviar").click(function() {
    var email = $(".postEmail");
    var setEmail = email.val();
    var senha = $(".postSenha");
    var setSenha = senha.val();

    $.ajax({
        url: "actions/logar.php",
        async: false,
        cache: false,
        type: 'POST',
        data: "email="+ setEmail +"&senha="+ setSenha,
        success:function(data){
            if(data == 'true'){
                window.location.href="home";
            } else {
                $(".resposta").html(data);
            }
        }
    });
    return false;
});

Где ".enviar" - моя кнопка отправки, а ".resposta" - это div, в котором я буду отображать сообщение об ошибке.

Мой код PHP:

        if(!$AccountDAO->Registrado()){
            $postEmail = addslashes(strip_tags(trim($_POST['email'])));
            $postSenha = addslashes(strip_tags(trim($_POST['senha'])));

            if ( !preg_match( '/^[^@]+@[a-zA-Z0-9._-]+\.[a-zA-Z]+$/', $postEmail )){
                echo '<span class="error">O seu e-mail parece inválido</span>';
                exit();
            } elseif ( strlen($postSenha) < 4 ) {
                echo '<span class="error">Digite uma senha com quatro ou mais caracteres</span>';
                exit();
            } 

            $validarUsuario = $SQL->prepare("SELECT * FROM `c_usuarios` WHERE `email` = :email AND `senha` = :senha");
            $validarUsuario->bindParam( ':email', $postEmail, PDO::PARAM_STR );
            $validarUsuario->bindParam( ':senha', hash('sha512', $postSenha), PDO::PARAM_STR );
            $validarUsuario->execute();

            if( $validarUsuario->rowCount() == true ){

                $dadosUsuario = $validarUsuario->fetch(PDO::FETCH_ASSOC);
                $_SESSION['uid'] = $dadosUsuario['uid'];
                echo 'true';

            } else {

                echo '<span class="error">O e-mail ou a senha estão incorretos</span>';

            }
        }
?>

Я уже пробую "вернуть true"вместо" эхо "правда" ", но я получаю тот же результат: ничего.= (

Хорошо, извините, 4 мой английский (как вы можете видеть, я португальский), и это мой первый раз без Google Translate. А, если возможно, тоже, пожалуйста, оцените мои языковые навыки, ХАХАХ

Хорошо, смейя!

Обновление

После многих отладок (?) Я пришел к выводу, что всекод, следующий за

            $dadosUsuario = $validarUsuario->fetch(PDO::FETCH_ASSOC);
            $_SESSION['uid'] = $dadosUsuario['uid'];

, не выполняется. Действительно, «true» (из эха) выполняется нормально, но «true» (строка) имеет разрыв строки. См .:

screenshot

Я не понимаю!: S Если я переместлю 'echo true' в начало моего источника, он будет отображаться нормально, без разрыва строки.

Ответы [ 2 ]

2 голосов
/ 22 июля 2011

Есть ли ошибки в avascript?Вы используете консоль Firebug или Google Chrome?Если да, попробуйте зарегистрировать свой ответ без перенаправления.Я написал простой AJAX-запрос и в соответствии с ответом сделать (или нет) перенаправить.Все работает отлично.Html:

<div id="wrapper">
    <form action="">
        <input type="submit" id="submit" />
    </form>
</div>

JS:

$('#submit').click(function(){
                $.ajax({
                    url: "ajax.php",
                    async: false,
                    cache: false,
                    type: 'POST',
                    data: "show=1",
                    success: function(data){
                        if(data=='true'){
                            window.location.href="other-page.html";
                        } else {
                            $("#wrapper").append(data);
                        }
                        console.log(data);
                    }
                });
                return false;
            });

И очень простой PHP:

if($_POST['show']==1)
    echo 'true';
else
    echo '<span class="error">Error</span>';

Что угодно, попробуйте отладить ответ с вашего сервера.Извините за большое количество кода, но не вижу важной разницы между вами и моими.Может быть, вы будете. :) Я надеюсь, что это будет полезно.

0 голосов
/ 22 июля 2011

Попробуйте добавить имя домена.Нравится window.location.href="http://example.com/home";

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...