Ir para conteúdo

Arquivado

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

jcfalcone

Problemas com validação,Ajax+php

Recommended Posts

Isso ele mesmo

só que tavao reclamando que ele só mostrava a menssagem que existia o usuario

ae postarao uma solução que mudava pra assim:

if(mysql_num_rows($sqla)){   echo 1;}else{   echo 0;}

e

if(xmlhttp=='1') {	  document.getElementById("teste2").innerHTML = 'Número já cadastrado!';	  document.getElementById('frmcar').incluir.disabled=true;	} else {	   document.getElementById("teste2").innerHTML = '';	   document.getElementById('frmcar').incluir.disabled=false;	}

e tipo eu pensei assim eu faço assim

inves deu devolve 0 ou 1

eu faço assim eu do echo na menssagem de erro

e no ajax ele vê se ta vazio se tive é pq nao deu erro e muda a borda pra verde

e se volta preenchido é pq deu erro e coloca borda vermelha e mostra erro

 

seria isso?

 

 

Editado****************

cara eu consegui

só precisei muda o if para

if(xmlhttp) {		document.getElementById('login').className = 'alerta';		document.getElementById('alerta').className = '';		document.getElementById("alerta").innerHTML = 'Oi';		document.getElementById("botao").disabled = false	} else {		document.getElementById('login').className = 'erro';		document.getElementById('alerta').className = 'alerta2';		document.getElementById("alerta").innerHTML = xmlhttp;		document.getElementById("botao").disabled = true	}

só deu um problema a menssagem que o php ta dando echo nao ta voltando com a variavel

Echo "Usuario ja cadastrado.";

ele marca que ja existe muda as propriedades da css mais a menssagem nao aparece na div

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, então quer dizer que seu PHP retorna '1' quando dá certo, e '0' quando dá errado? é isso?

 

Se for isso fica simples como eu falei:

if(xmlhttp==false) { //erro NA REQUISIÇÃO AJAX, não no php...		document.getElementById("alerta").innerHTML = 'Não foi possível completar sua requisição por problemas de conexão';		document.getElementById("botao").disabled = false	} else {		//o ajax conseguiu carregar corretamente o que foi processado 		// pelo php e agora deverá testar se o php retornou 1 ou 0		 		if(xmlhttp=='0'){ //retornou erro nos campos descoberto pelo php		   document.getElementById('login').className = 'erro';		   document.getElementById('alerta').className = 'alerta2';		   document.getElementById("alerta").innerHTML = xmlhttp;		   document.getElementById("botao").disabled = true		}else{		   document.getElementById("alerta").innerHTML = xmlhttp;		   document.getElementById("botao").disabled = false		}	}

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara dexa eu pergunta o codigo original retorna 1 ou 0só que eu auterei pra ele retorna uma menssagemesse seu código em parte funcionomais tipose o campo ta vazio ele fala que ja ta cadastrado,que é a menssagemq ue eu coloquei pra ele retornamais quando eu escrevo alguma coisa ele volta que deu erro de conexão que é a parte do seu códigooq pode ta errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, já não to entendendo mais suas dúvidas. Explica melhor qual é o problema e aonde voce quer chegar.

 

Outra coisa que eu percebi. Estude, estude estude. Não adianta ficar querendo pular etapas.

Eu percebi que voce não tá entendendo qual é a diferença entre Ajax, PHP, HTTP, HTML, Javascript, etc... Tá achando que tá tudo ligado por default.

 

Vou te passar um tutorial ÓTIMO mesmo, que vai te fazer entender essas bagaça tudo. hauehuhe.

Quando voce terminar de ler ele e fizer as devidas alterações, posta seu problema novamente pra eu te ajudar.

 

Lembrando que: Só vou ajudar após voce ter garantido que leu o tutorial que eu passei

 

O básico da web 1

 

Introdução ao HTTP

 

Métodos de requisição

 

Lembre-se:

1) O servidor recebe uma requisição HTTP seja do browser, de mecanismos de busca, de telnet, de ajax, etc...

2) O servidor procura o arquivo em suas pastas e faz seu processamento se for PHP, asp, etc...

3) O php, asp gera um HTML simples que é enviado pelo servidor de volta para o agente do usuário

4) O browser (e seu ajax) captura este retorno como um texto normal e nem sabe que existe PHP, asp. O browser (e seu ajax) só entendem que chegou um monte de textos, caberá a voce fazer o tratamento disso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

html eu so horrivel

ajax eu nao sie mesmo comecei a poco tempo

php eu sei isso eu possso fala uq eue sei

java script eu ja estudie mais nao lembro

 

vamos la

PROBLEMA:

ajax faiz a requesição e chama o php

ele roda bunitinhu

só que olhe a foto

Imagem Postada

 

VEJA que o código ta chamando a menssagem errada

e o código php nao ta errado pq antes deu coloca o código ele tava funcionando

eu mudei o codigo pra ele retorna a menssagem nao 1 ou 0

ele ta assim

$texto = $_REQUEST["login"];include("connection/connect.php");require("connection/connect.php");mysql_connect  ($host, $user, $pass) or die (error_log());mysql_select_db($db);// Login	if (@mysql_num_rows(mysql_query("SELECT login FROM cadastros_usuario WHERE login = '$texto'")) == 0)	{	   Echo "Usuario ja cadastrado.";	}?>
VIU ele pega o login que o ajax passa verifica se acha outro igual e devolve uma menssagem.

Eu nao conheço ajax nao sei se ele retorna true ou falce 0 ou 1 nas variaveiz.

 

por isso eu nao entendi seu código se ele volta true se conseguiu e falce se deu problema beleza mais era pra ele vim um valor na variavel que é a menssagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cra o meu problema é o seguinte

eu nao sei como faze pra ele volta a menssagem de erro.

Eu nao entendo de ajax mais o php ta certo e pelo menos o java que chama o ajax esta certo.Pq ele nao estouro erro.

 

o meu ajax que com muito cursto eu mexi ta assim:

 

function envia(url, metodo, modo){	var login = document.getElementById('form1').login.value;	remoto  = new ajax();	xmlhttp = remoto.enviar(url + "?login=" + login, metodo, modo );	var resutado = remoto.responseText;	if(xmlhttp) {		document.getElementById('login').className = 'alerta';		document.getElementById('alerta').className = '';		document.getElementById("alerta").innerHTML = 'Oi';		document.getElementById("botao").disabled = false	} else {		document.getElementById('login').className = 'erro';		document.getElementById('alerta').className = 'alerta2';		document.getElementById("alerta").innerHTML = xmlhttp;		document.getElementById("botao").disabled = true	}

ele ta chamando certo pq se eu escrevia um que ja existia ele entrava no else

e se nao existice mostrava a menssagem 'oi' que esta no if.

Só quero sabe oq eu tenho que muda pra menssagem que esta no php que eu montei aparece no alert

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pronto cara

consegui

tive que fuça muito na net pra acha

mais achei

olha como fico ae

if(xmlhttp == null || xmlhttp.length == 0) {
to ficando f*** nisso

meio lento mais f***

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo. Agora saquei seu problema.

 

Seguinte: o ajax (xmlhttp) NÃO TEM COMO saber se a pessoa já existe ou não!!! As únicas coisas que podem estar no xmlhttp é FALSE (quando deu erro de rede, javascript, etc e ele não conseguiu chamar a página php), ou então ele retorna QUALQUER TEXTO QUE O PHP MANDAR seja ele texto dizendo que deu certo, dizendo abobrinha, dizendo qualquer coisa.

A partir daí então é que voce testará se este retorno deu certo ou não...

 

 

Outra questão que eu nem queria falar agora e pode fazer sua cabeça pirar as idéia...

Este ajax desta função do fabyo, é ASSÍNCRONO.

Quando o ajax é usado SÍNCRONO ele fica na requisição aatéeeee que o servidor retorne com a resposta.

No caso deste script do fabyo, ele já começa a processar a próxima linha, antes de chegar a requisição do servidor...

 

Soluções pra isso:

 

1) Transforme em síncrono passando false no terceiro parametro da função enviar(). Mais dícas sobre isso voce encontra em: http://forum.imasters.com.br/index.php?showtopic=181227

 

OU

 

2) Dê um tempinho antes de começar a processar a linha que faz o teste if(xmlhttp)blablabla

 

OU

 

3) Use minha função que tem uma forma melhor de tratar isso. SE for usá-la, me avise que eu te informo onde voce altera pra fazer seus testes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara só hoje depois de muito testa eu achei o problema que você falotipo o campo login ele ta fazendo na horasó que os outros nãoele ta dexando os outros pularem de campo antes da validação terminavocê disse que podia coloca false na 3 q resolviaele ta chamando assimonblur="envia('valida/login.php', 'GET', false);"e sua função como eu faria

Compartilhar este post


Link para o post
Compartilhar em outros sites

E aí jcfalcone já resolveu a pendenga?Se não, posta seus problemas aí...

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao é que tipo ele ta perdendo performacepq quando alguem sai do campo ele tenta valida e vai pro outro tenta valida tbm e ta perdendendo um poco de performaceme explica como eu transformo em SÍNCRONO essa validação

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.