Ir para conteúdo

POWERED BY:

Arquivado

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

CleitonGarcia

Alerta JS em retorno Json

Recommended Posts

Estou fazendo um post com Ajax e retornando texto, até aí Ok, no entanto gostaria de exibir um alerta. Tentei junto ao meu retorno Json isso:

 

(básico demais)

 

<script type="text/javascript">
alert('Alerta!');
</script>
E não funcionou...
Alguém pode me dar uma luz?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quem vai executar o alerta é o client, depois do retorno.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Pensei nisso, estava tentando fazer uma comparação, de alguma forma exibir o alerta somente SE, mas como sou ruinzin no Javascript, complica!
A requisição é esta:
$(document).ready(function() {
              $("input[name=email]").change(function() {
              function getById() {
                  var $result = document.getElementById("result"),
                      email = document.getElementById("email").value,
                      xmlhttp = new XMLHttpRequest();

                  xmlhttp.open("GET", "lib/ajax_email.php?email=" + email + "&codCurso=<?php echo $codCurso; ?>", true);
                  xmlhttp.send();

                  xmlhttp.onreadystatechange = function() {
                      if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                          $result.innerHTML = xmlhttp.responseText;
                      } else {
                          $result.innerHTML = "Um erro ocorreu: " + xmlhttp.statusText;
                      }
                  };
              }
              getById();
                })
            })

@Edit:

Teria como trazer uma váriavel (PHP) do retorno e fazer um IF caso ela exista e exibir o alerta?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que confusão... uma forma de organizar melhor:

function getById() {
  var $result = document.getElementById("result"),
      email = document.getElementById("email").value,
      xmlhttp = new XMLHttpRequest();

  xmlhttp.open("GET", "lib/ajax_email.php?email=" + email + "&codCurso=<?php echo $codCurso; ?>", true);
  xmlhttp.send();

  xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        $result.innerHTML = xmlhttp.responseText;

        alert('Alerta!'); // aqui vc faz seu IF
    } else {
        $result.innerHTML = "Um erro ocorreu: " + xmlhttp.statusText;
    }
  };
}
$(document).ready(function() {
    $("input[name=email]").change(getById);
});

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado por organizar o código!

 

Mas não dá pra fazer esse IF com o PHP né? Tentei retornar no Json uma váriavel PHP e fazer o IF, caso exista aparece o alerta.

 

Ex.:

<?php if($row->queryFound){ ?>
        alert('Alerta!'); // aqui você faz seu IF
<?php } ?>

 

Vou tentar com o Javascript.. Mas, como recuperar uma variável e transformar em Javascript?
@Edit:
Assim moreless?

 

$( nome ).val( json.nome );

Compartilhar este post


Link para o post
Compartilhar em outros sites

  xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        $result.innerHTML = xmlhttp.responseText;

        if(xmlhttp.responseText === 'ae') {
             alert('Alerta!');
        }
    } else {
        $result.innerHTML = "Um erro ocorreu: " + xmlhttp.statusText;
    }
  };
entendeu a idéia ?

 

Ai vc faz o php retornar um JSON e pode trabalhar melhor esse retorno. Colocando uma parte do JSON no $result, e outra para fazer o if.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Até aí tudo bem, essa ideia eu estava em mente sim. Mas por exemplo, eu tenho o json_encoded, uma váriavel $found = 'yes'; agora no Javascript eu gostaria de chamala, algo como json.found.

 

Como recuperar uma váriavel especifica do Json?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exatamente desse jeito ai q vc disse.

 

E estude sobre JSONparse

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aquele XML response e responseText me confundiram a ideia, essa função traz a váriavel Json também?

 

Porque eu mudei, estou tentando assim agora?

 

 

$(document).ready(function(){
    $("input[name='email']").change(function(){
      var email = $("input[name='email']");
      var codCurso = <?php echo $codCurso; ?>;


        $.getJSON(
          'lib/ajax_email.php',
          { email: $( this ).val(),
            codCurso: codCurso
          },
          function( json )
          {
            var email = json.email;
            
              alert('Alerta!' + email);
            
          }
        );
    });
  });

 

Mas a váriavel vem undefined... :x

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se tá vindo undefined, então tem erro no seu php.

 

Aprenda a debugar:

http://wbruno.com.br/ajax/como-debugar-ajax-firebug/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora eu consigui recuperar, no entanto, eu não consigo enviar os parametros necessários ao GET nessa linha:

 


{ email: $( this ).val(), codCurso: codCurso },

Se eu mudar a URL com os valores que eu desejo eu consigo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi a dúvida.

 

Pq não consegue ? O que acontece ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvi dessa maneira:

 

 

$(document).ready(function(){
    $("input[name='email']").change(function(){
      var email = $("input[name='email']");
      var codCurso = <?php echo $codCurso; ?>;


        $.getJSON(
          'lib/ajax_email.php',
          { email: $( this ).val(), codCurso: codCurso },
          function( json )
          {
            var nome = json.nome;
            var codCurso = json.codCurso;
            
              alert('Você já está inscrito nesse evento. Deseja reemitir seu comprovante ' + nome + '?');
            
          }
        );
    });
  });

Era o resultado, eu debuguei e vi que estava enviando, mas o resultado do PHP não estava vindo... Agora vou aplicar o IF (:

Compartilhar este post


Link para o post
Compartilhar em outros sites

outra forma...

$('#email').change(function(){
var email = $(this).val(),
	codCurso = 595;

$.getJSON('test.php?email='+email+'&codigo='+codCurso, function(data){
if( data[0].ok == 1 ){
	alert('Sucesso!\n\nEmail: '+data[0].e+'\nCodigo: '+data[0].c);
}else{
	alert('Erro:\n' + data)
}
});
});

PHP

if( isset( $_GET['email'], $_GET['codigo'] ) ){
	$data[0] = array(
	'ok' => '1',
	'e' => $_GET['email'],
	'c' => $_GET['codigo']
	);
	
	echo json_encode( $data );
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma dúvida mais técnica agora.. eu carrego a página pela primeira vez, digito email, ele faz a consulta e o resultado desejado. Agora eu retorno a página (pois ela me redireciona), (aí o campo já vem preenchido) então, se eu tento digitar o e-mail novamente, ele nada faz, não realiza a consulta... porque isso acontece?

 

@Edit:

Pelo que pudê observar, ele só realiza a consulta se eu alterar o campo ou exclui e preencher novamente!

 

@Edit:

Ficou meio contraditório... uma hora funciona e outra não?! Pois bem, digitei o e-mail, ele me redirecionou pra outra página, agora eu volto manualmente a página, então o campo vem preenchido, se eu tento entrar no campo e sair ele não faz nada, caso eu edite, ele refaz a requisição!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma dúvida mais técnica agora.. eu carrego a página pela primeira vez, digito email, ele faz a consulta e o resultado desejado. Agora eu retorno a página (pois ela me redireciona), (aí o campo já vem preenchido) então, se eu tento digitar o e-mail novamente, ele nada faz, não realiza a consulta... porque isso acontece?

 

@Edit:

Pelo que pudê observar, ele só realiza a consulta se eu alterar o campo ou exclui e preencher novamente!

 

Acredito que por que o valor seja o mesmo.

 

como contorna isso?

 

assim...

$('#email').on('blur', function(){ 

...

});

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perfeito!

 

Brincando com o Javascript, hehe!

 

Minha solução em base na ajuda de todos que colaboraram:

 

JavaScript:

             $(document).ready(function(){
                    $("input[name='email']").on('blur', function(){
                      var email = $("input[name='email']");
                      var codCurso = <?php echo $codCurso; ?>;


                        $.getJSON(
                          'lib/ajax/ajax_email.php',
                          { email: $( this ).val(),
                            codCurso: codCurso
                          },
                          
                          function( json )
                          {
                            var NomeAluno = json.NomeAluno;
                            var codAluno = json.codAluno;
                            var codEvento = json.codEvento;
                            var result = json.result;
                            
                            if(result === 'TRUE') {
                              var r = confirm('Você já está inscrito nesse evento. Deseja reemitir seu comprovante ' + NomeAluno + '?');
                              
                              if (r == true)
                              {
                                location.href = 'comprovante.php?id=' + codAluno;
                              }
                              else
                              {
                                alert('Redirecionando...');
                                location.href = 'index.php';
                              }
                            }
                            
                          }
                        );
                    });
                  });

 

PHP:

 

<?php
if(isset($_GET['email'], $_GET['codCurso']) && !empty($_GET['email']) && !empty($_GET['codCurso']))
{
$email    = $_GET['email'];
$codCurso = $_GET['codCurso'];

$query = mysql_query("SELECT a.CodAluno, a.NomeAluno, a.EmailAluno, e.CodEvento
        FROM `Aluno` a
        INNER JOIN `Evento` e ON e.CodEvento = ea.CodEvento
        WHERE a.EmailAluno = '{$email}' AND e.CodEvento = '{$codCurso}'", $connescola) or die(mysql_error());

$arr = Array();

if(mysql_num_rows($query))
{
$row = mysql_fetch_object($query);


$arr['NomeAluno'] = $row->NomeAluno;
$arr['codAluno'] = $row->CodAluno;
$arr['codEvento'] = $row->CodEvento;
$arr['result'] = 'TRUE';
}

echo json_encode($arr);
}

 

Obrigado a todos! :D

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.