Ir para conteúdo
Fórum Script Brasil
  • 0

Identifica Somente Na Segunda Chamada


diogoleter

Pergunta

Prezados,

Estou com um pequeno problema no meu código Ajax. O objetivo é avisar em um alert que o usuário já existe cadastrado.

Tenho o seguinte:

//form_validate.js

function validar(){

var usuario=document.frm.usuario.value;
var senha1=document.frm.pas1.value;

// Valida existência de usuário


    var xmlhttp = false;
    
    //Check if we are using IE.
    try {
        //If the javascript version is greater than 5.
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
        //If not, then use the older active x object.
        try {
            //If we are using IE.
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (E) {
            //Else we must be using a non-IE browser.
            xmlhttp = false;
        }
    }
    
    //If we are using a non-IE browser, create a javascript instance of the object.
    if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
        xmlhttp = new XMLHttpRequest();
    }
    
        var serverPage="users/veruser.php?us="+usuario;
    
        var res;
        xmlhttp.open("GET", serverPage);
        xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                res = xmlhttp.responseText;
            }
        }
        xmlhttp.send(null);    
    
if (res>=1){
alert("Este usuário já existe!");
document.frm.usuario.focus(); 
return false;
}

}
Esse acima é o código Ajax, e abaixo o código php referente ao arquivo veruser.php
// veruser.php

<?php

include "../access_client.inc";

$username=$_GET["us"];

$sql=mysql_query("SELECT username FROM psbd1_user_detail WHERE username='$username'");
$nl=mysql_num_rows($sql);

echo "$nl";

?>

Já executei o php individualmente e o resultado sai correto.

Ao submeter o formulário de cadastro o sistema deve verificar se o usuário já existe no banco de dados e se existir não submeter o formulário.

O código acima funciona e tal, porém só funciona no segundo submit, ou seja, no primeiro ele passa.

Obrigado!

Editado por diogoleter
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Cara tenta fazer assim...

var res;
        xmlhttp.open("GET", serverPage);
        xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                res = xmlhttp.responseText;
                        =================================================+==>    Para cá!
                        if (res>=1){                                     |
                        alert("Este usuário já existe!");                |
                        document.frm.usuario.focus();                    |
                        return false;                                    |
                        =================================================+
            }
        }
        xmlhttp.send(null);    

=================================================+==>    Daqui
if (res>=1){                                     |
alert("Este usuário já existe!");                |
document.frm.usuario.focus();                    |
return false;                                    |
=================================================+

... Pois eu usu um codigo muito semelhante e aqui funciona.

Espero que ajude...

Link para o comentário
Compartilhar em outros sites

  • 0
Cara tenta fazer assim...

var res;
        xmlhttp.open("GET", serverPage);
        xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                res = xmlhttp.responseText;
                        =================================================+==>    Para cá!
                        if (res>=1){                                     |
                        alert("Este usuário já existe!");                |
                        document.frm.usuario.focus();                    |
                        return false;                                    |
                        =================================================+
            }
        }
        xmlhttp.send(null);    

=================================================+==>    Daqui
if (res>=1){                                     |
alert("Este usuário já existe!");                |
document.frm.usuario.focus();                    |
return false;                                    |
=================================================+

... Pois eu usu um codigo muito semelhante e aqui funciona.

Espero que ajude...

Eu até fiz isto, e funciona bem, aparece o alert mas assim que clico no ok do alert o formulário é submetido automaticamente. É aqui que me perco.

Obrigado!

Link para o comentário
Compartilhar em outros sites

  • 0

Ah tá...

faz assim cara

if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                res = xmlhttp.responseText;
                 
                //INUTILIZANDO O FORMULARIO
                [color="#FF0000"][b]document.NOMEdOsEUfFORMULARIO.submit() = false;[/b][/color]

            }

É para funcionar...

Ou então faz assim cara...

1. Inicia o Formulario com o botão submit desativado

2. Depois que for retornado que o login não foi utilizado você ativa ele

falou...

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...