Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

weikan_1991

[DÚVIDA] - Dados não retornam como deveriam em AJAX

Recommended Posts

Olá.

Estou desenvolvendo um pequeno cadastro onde as informações do resultado do arquivo que efetua o cadastro do banco de dados são trazidas à minha página atual via AJAX. A situação é a seguinte:

- Eu digito nome e senha e aperto no meu button com type "submit";

- Ele ativa a função "atualizarDados()";

- Ele dá às variáveis os seus respectivos valores e dependendo deles retorna para a tela principal uma das mensagens:

* Falha no cadastro!

* Usuário já existe!

* Cadastro Efetuado!

Ele acessa normalmente o arquivo "efetuar_cadastro_usuario.php" e os "ifs" estão funcionando normalmente, acontece que ele não está retornando a mensagem na tela e quando retorna ela simplesmente aparece e some. Eu queria que a mensagem fosse permanente e se atualizasse dependendo das informações que eu coloco no cadastro.

--Alguém poderia me dar uma luz?. Obrigado--

Eis os códigos:

cadastrar_usuario.php (formulário)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Sistema Ajuda</title>
    <script type="text/javascript" src="_js/jquery.js"></script>
    <link rel="stylesheet" href="_css/estilo.css"/>
    <link rel="stylesheet" href="_css/formularios.css"/>
    <script type="text/javascript" src="_js/scripts.js"></script>
    <link rel="shortcut icon" href="_img/icon.png" type="image/x-icon" />
</head>
<body>

<!--Incluindo a DIV do formulário-->
<form>
    <div class="fCad">
        <h1>Cadastrar Novo Usuário</h1><br/>
        <hr/>
        <br/>
        <p><input type="text" maxlength="30" placeholder="Insira um nome de até 30 caracteres" id="nome" /></p>
        <p><input type="password" maxlength="30" placeholder="Insira uma senha de até 30 caracteres" id="senha" /></p>
        <p>Informe o tipo de usuário:
        <select name="tipo" id="tipo">
            <option value="1">Usuário Comum</option>
        </select></p>
        <p>Informe o setor:
            <select name="setor" id="setor">
            <?php
            include 'conexao.php';
            $sql = "SELECT * FROM setor ORDER BY nome";
            $query = mysqli_query($conexao, $sql) or die (mysqli_error("Falha na conexão!"));
            while($lista = mysqli_fetch_array($query)){
                ?>
                <option value="<?php echo $lista['IDSETOR']; ?>"><?php echo $lista['NOME']; ?></option>
                <?php
            }
            ?>
            </select>
        </p><br/>
        <div id="destino">
            <p><!--aqui aparece a mensagem de confirmação--></p>
        </div>
        <hr/><br/>
        <button type="submit" onclick="atualizarDados()">Enviar</button><button type="reset">Limpar</button><button type="button" onclick="voltar()">Voltar</button>
    </div>
</form>
</body>
</html>

efetuar_cadastro_usuario.php (página que efetua o cadastro no banco de dados)

<script type="text/javascript" src="_js/jquery.js"></script>
<script type="text/javascript" src="_js/scripts.js"></script>
<?php
    $nUsuario = $_POST['nome'];
    $nSenha = $_POST['senha'];
    $tipo = $_POST['tipo'];
    $setor = $_POST['setor'];
    $a = "Cadastro Efetuado!";
    include "conexao.php";

    $verificar = "SELECT * FROM usuarios WHERE NOME = '$nUsuario'";
    $executar = mysqli_query($conexao,$verificar) or die (mysqli_error($conexao));
    $contar = mysqli_num_rows($executar);
    if($contar != 0) {
        echo "Usuário já existe!";
    }else {
            if($nUsuario != '' && $nSenha != '') {
                $comandosql = "INSERT INTO usuarios (NOME, SENHA, IDADM, IDSETOR) VALUES ('$nUsuario', '$nSenha', $tipo, $setor)";
                $querysql = mysqli_query($conexao, $comandosql) or die (mysqli_error($conexao));
                echo "Cadastro Efetuado!";

            }else{
                echo "Falha no cadastro!";
            }
    }
?>

scripts.js (onde está a função que deveria apresentar as mensagens na tela)

function atualizarDados(){
    var nome = document.getElementById('nome').value;
    var senha = document.getElementById('senha').value;
    var tipo = document.getElementById('tipo').value;
    var setor = document.getElementById('setor').value;

    $.ajax({
        type:'post',
        url:'efetuar_cadastro_usuario.php',
        data:{nome:nome,senha:senha,tipo:tipo,setor:setor},
        success:function(dados){
            $('div#destino p').html(dados);
        }
    })
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando você executa a função da uma olhada o que ela retorna no console do navegador.

E no seu button

<button type="submit" onclick="atualizarDados()">Enviar</button>

Troque por

<input class="botao_cadastrar" type="button" value="Enviar" onclick="atualizarDados()" />

Na página efetuar_cadastro_usuario.php não precisa colocar as bibliotecas, não á necessidades.

Segue meu GitHub eu tenho um exemplo desses que pode te ajudar.

https://github.com/ckcesar/cadastroPHP_telasComAbas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Edit: Ignore ... não tinha lido que não tem json_encode haha :rolleyes:

Sempre q leio alguma coisa relacionada a 'ajax não retorna'... já me vem a cabeça o maldito do Coding...

Está tratando tudo como utf-8 correto ?

Confirma se sua chamada está 'cuspindo' em utf-8.

Se esta salvo no banco como utf-8 se a tabela está em utf-8 se o script que faz a conexão/consulta/exibição está em ,,,, bom você sabe utf-8

Veja mais:

https://secure.php.net/manual/pt_BR/function.json-encode.php

Toda a string deve ser codificada como UTF-8.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.