Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde,
Sou iniciante em Ajax, quem puder me ajudar com este problema, agradeço desde já!
Num formulário.html, script_ajax e valida.php para fazer a validação dos dados, necessito enviar como resposta 2 tipos de mensagem distintas, sendo uma na cor vermelha caso a validação no php encontra erro e a outra na cor verde caso todos os dados passe na validação com sucesso. Até o momento eu consigo fazer retornar apenas para uma div="reposta" seja qual for a resposta. A minha dúvida é esta, é possível retornar 2 tipos de mensagem de respostas em div diferentes? uma div="resposta" para a mensagem na cor verde e em outra div="msg_erro" para a mensagem na cor vermelha.
Vamos ao código de validacao.php
$nome = $_POST['nome'];
if(isset($nome)){
$status = TRUE;
//Validando NOME
if(empty($nome)){
$status = FALSE;
echo "O campo Nome é obrigatório"; //esta msg deve retornar na outra diz para ser impressa no formulário.
}
elseif(!preg_match("/([A-Z]{1}[A-Z]+\s{0,1}$)+/", $nome)){
$status = FALSE;
echo "Este campo não aceita número ou caracter especial!"; //esta msg deve retornar na outra diz para ser impressa no formulário.
}
elseif(strlen($nome) < 7){
$status = FALSE;
echo "O campo Nome deve conter no mínimo 7 caracteres!"; //esta msg deve retornar na outra diz para ser impressa no formulário.
}
}
if($status == TRUE){
echo "O nome é: ".$nome. "<br/>"; //aqui deve retornar a mensagem na cor verde caso as validações acima passem com sucesso. [color="#00FF00"](Dados validados com sucesso!)[/color]
}
?>
Alguém pode me ajudar?
Obrigado
Usando uma página para validar o nome, outra para enviar a mensagem do nome e a página de envio:
enviar.php:
<script type="text/javascript">
var area = null;
function valida(){
var nome = document.getElementById("nome").value;
var pagina = (window.XMLHttpRequest)? new XMLHttpRequest : new ActiveXObject("Microsoft.XMLHTTP");
pagina.onreadystatechange = function(){
if(pagina.readyState==4 && pagina.status==200){
if(pagina.responseText=="false") {
area = "naoOk";
document.getElementById("ok").innerHTML="";
}
else{
area = "ok"
document.getElementById("naoOk").innerHTML="";
}
if(area!=null) pegaMensagem();
}
}
pagina.open("GET", "validar.php?nome="+nome, true);
pagina.send(null);
}
function pegaMensagem(){
var nome = document.getElementById("nome").value;
var pagina1 = (window.XMLHttpRequest)? new XMLHttpRequest : new ActiveXObject("Microsoft.XMLHTTP");
pagina1.onreadystatechange = function(){
if(pagina1.readyState==4 && pagina1.status==200){
document.getElementById(area).innerHTML=pagina1.responseText
}
}
pagina1.open("GET", "mensagem.php?nome="+nome, true);
pagina1.send(null);
}
</script>
<p id="ok" style="color:#00FF00;"></p>
<p id="naoOk" style="color:#FF0000;"></p>
<br />
<input type="text" id="nome" /><button onclick="valida()">
validar.php:
<?php
$nome = isset($_GET['nome'])? $_GET['nome'] : false;
if($nome!=false){
$status = true;
if(empty($nome)){
$status = FALSE;
echo "false";
}
elseif(!preg_match("/([A-Z]{1}[A-Z]+\s{0,1}$)+/", $nome)){
$status = FALSE;
echo "false";
}
elseif(strlen($nome) < 7){
$status = FALSE;
echo "false";
}
}
if($status == TRUE){
echo "true";
}
?>
mensagem.php:
<?php
$nome = isset($_GET['nome'])? $_GET['nome'] : false;
if($nome!=false){
$status = true;
if(empty($nome)){
$status = FALSE;
echo "O campo Nome é obrigatório";
}
elseif(!preg_match("/([A-Z]{1}[A-Z]+\s{0,1}$)+/", $nome)){
$status = FALSE;
echo "Este campo não aceita número ou caracter especial!";
}
elseif(strlen($nome) < 7){
$status = FALSE;
echo "O campo Nome deve conter no mínimo 7 caracteres!";
}
}
if($status == TRUE){
echo "O nome é: ".$nome. "<br/>";
}
?>
Espero que tenha ajudado!
aí só tem php onde está a parte ajax? como está voltando o retorno do erro? nesse erro é só colocar uma div msg_erro use if com os resultados bolleanos como você faz no php e retorne os resultados esperados.