Ajax Jquery return variable giving error

3

I have the following script in ajax :

  $("#contato").on("submit", function () {
    if($('#descricao').val() == "")   {     //verifica apena o texto
        alert("Descrição não está preenchida!");
        $('#descricao').siblings().each(function(){
          if ($(this).children('iframe').length){
             var iframe=$(this).children('iframe')[0];
             iframe.contentWindow.focus();
          }
       });
       return false;
    } 

    $.ajax({
     url: "_required/email.php",
     type: "POST",
     data: $("#contato").serialize(),
     success: function(retorno){

        if (retorno.trim() == "OK") {
          resposta = "E-mail enviado com sucesso!";
        } else {
          resposta = "Erro no envio do E-mail";
        }
       $(".resposta").css("display", "block");
       $(".resposta").html(resposta);             
     }
    });

    return false;

  }); 

return in success :, returns \ return a query to a script php that returns two values, or OK or ERROR.

In this part

   $(".resposta").html(resposta);             

If I switch to

   $(".resposta").html(retorno);              

Return me

OK

But keeping up

   $(".resposta").html(resposta);             

Print

"Erro no envio do E-mail";

Where am I going wrong?

Files involved:

email.php

<?php 
 ini_set("display_errors",true);
 ini_set("display_startup_erros",1);
 error_reporting(E_ALL && E_NOTICE);
 error_reporting( E_ALL | E_STRICT ); // PHP 5.3
 error_reporting( E_ALL ); // Todas as outras versões 
?>

<?php
    require_once "../_controlls/_conexao/Conexao.php";
    require_once "../_controlls/_util/PhpUtil.php";     
    require_once "../_controlls/_models/Emails.php";
    require_once "../_controlls/_daos/EmailsDao.php";
    require_once "../_controlls/_util/Constantes.php";

    $connection = new Conexao(); 
    $conexao = $connection->abreConexao();
    $constantes = new Constantes();  
    $phpUtil = new PhpUtil();

    $assunto = $phpUtil->contatoTipos($_POST["assunto"]);   
    $emailsDao = new EmailsDao($conexao);

    $email = new Emails(
                     date("Y-m-d"), 
                     "n", 
                     $_POST["nome"], 
                     $_POST["email"], 
                     preg_replace( '#[^0-9]#', '', $_POST["telefone"] ),
                     $_POST["assunto"], 
                     $_POST["descricao"]);

    $emailsDao->cadastrar($email);

    $outro = $_POST["assunto"] == 6 ? "<b>Qual:</b> ".$_POST["qual"]."<br /><br />" : "";   

    $texto  = "<h2>".$constantes->getTituloSite()."</h2><br />";
    $texto .= "<img style='display:block; margin:0 auto;' src='".$constantes->getHttpSite()."/_img/logo.png' />";
    $texto .= "<b>Olá, você nos enviou um e-mail com a seguinte mensagem:</b><br /><br />";
    $texto .= "<b>Nome:</b> ".$_POST["nome"]."<br /><br />";
    $texto .= "<b>Telefone:</b> ".$_POST["telefone"]."<br /><br />";
    $texto .= "<b>E-mail:</b> ".$_POST["email"]."<br /><br />";
    $texto .= "<b>Interesse:</b> ".$assunto."<br /><br />";
    $texto .= $outro;
    $texto .= "<b>Descrição:</b><br />".nl2br($_POST["descricao"])."<br /><br /><br />";
    $texto .= "Estaremos respondendo o mais rápido possível<br /><br />";

    require_once "../_controlls/_models/EmailEnviar.php";
    require_once "../_controlls/_daos/EmailEnviarDao.php";

    $html = "<!doctype html>
             <html>
              <head>
                <meta charset='utf-8'>
                <title>".$constantes->getTituloSite()."/title>
              </head>           
              <body>".$texto."</body>
             </html>";

    $assuntoCodificado = sprintf('=?%s?%s?%s?=', 'UTF-8', 'Q', quoted_printable_encode("Re: ".$assunto));


    $emailEnviar = new EmailEnviar( 
          $_POST["nome"], 
          $_POST["email"],
          $constantes->getTituloSite(), 
          "[email protected]",
          $assuntoCodificado,
          $texto
    );

    $emailEnviarDao = new EmailEnviarDao();

    $enviarEmail = $emailEnviarDao->enviaEmail($emailEnviar);   

    if ($enviarEmail["success"] == 1) {

        echo "OK";

    } else {

        echo "ERRO";

    }

?>

Email.php // Here a class

<?php

  class Emails {

      private $idEmail;
      private $data;
      private $respondidoData;
      private $respondido;
      private $nome;
      private $email;
      private $telefone;
      private $assunto;
      private $descricao;

      public function __construct (
          $_data,
          $_respondido,
          $_nome, 
          $_email, 
          $_telefone, 
          $_assunto, 
          $_descricao) {

          $this->data = $_data;
          $this->respondido = $_respondido;
          $this->nome = $_nome;
          $this->email = $_email;
          $this->telefone = $_telefone;
          $this->assunto = $_assunto;
          $this->descricao = $_descricao;
      }


      public function setIdEmail ($_idEmail) {
          $this->idEmail = $_idEmail;
      }

      public function setRespondidoData ($_respondidoData) {
          $this->respondidoData = $_respondidoData;
      }           

      public function getIdEmail () {
          return $this->idEmail;
      }

      public function getData () {
          return $this->data;
      }

      public function getRespondidoData () {
          return $this->respondidoData;
      }

      public function getRespondido () {
          return $this->respondido;
      }

      public function getNome () {
          return $this->nome;
      }

      public function getEmail () {
          return $this->email;
      }

      public function getTelefone () {
          return $this->telefone;
      }

      public function getAssunto () {
          return $this->assunto;
      }

      public function getDescricao() {
          return $this->descricao;
      }
  }

?>

EmailDao.php // Here Class of methods

<?php 

 class EmailsDao {

     private $conexao;

     public function __construct ($_conexao) {      
         $this->conexao = $_conexao;
     }

     public function responder ($idEmail) {

         $string = "UPDATE emails 
                    SET respondido = 's' , respondidoData = NOW() 
                    WHERE idEmail = ".$idEmail;

        $this->conexao->query($string);
     }

     public function excluir ($idEmail) {        

         $string = "DELETE FROM emails WHERE idEmail = ".$idEmail;

         $this->conexao->query($string);

     }

     public function cadastrar ($email) {        

         $string = "INSERT INTO emails (data, respondido, nome, email, telefone, assunto, descricao) VALUES ('".$email->getData()."','".$email->getRespondido()."','".$email->getNome()."','".$email->getEmail()."','".$email->getTelefone()."','".$email->getAssunto()."','".$email->getDescricao()."')";

         $this->conexao->query($string);

     }

     public function pesquisaEmail($idEmail) {
         $email = null;           

         $string = "SELECT 
                       idEmail, 
                       data, 
                       respondidoData, 
                       respondido, 
                       nome, 
                       email, 
                       telefone, 
                       assunto, 
                       descricao
                    FROM emails 
                    WHERE idEmail = ".$idEmail;

         $registros = $this->conexao->query($string);
         $quantasLinhas = $registros->num_rows;      

         if ($quantasLinhas > 0) {

             list ($idEmail, $data, $respondidoData, $respondido, $nome, $email, $telefone, $assunto, $descricao) = $registros->fetch_row();

             $email = new Emails($data, $respondido, $nome, $email, $telefone, $assunto, $descricao);                        
             $email->setIdEmail($idEmail);
             $email->setRespondidoData($respondidoData);
         }

         return $email;

     }

     public function pesquisaEmails() {
         $emails = null;           

         $string = "SELECT idEmail, data, respondidoData, respondido, nome, email, telefone, assunto, descricao FROM emails";

         $registros = $this->conexao->query($string);
         $quantasLinhas = $registros->num_rows;      

         if ($quantasLinhas > 0) {

             while (list ($idEmail, $data, $respondidoData, $respondido, $nome, $email, $telefone, $assunto, $descricao) = $registros->fetch_row()) {

             $email = new Emails($data, $respondido, $nome, $email, $telefone, $assunto, $descricao);                        
             $email->setIdEmail($idEmail);
             $email->setRespondidoData($respondidoData);

             $emails[] = $email;
             }
         }

         return $emails;

     }

 }
?>

EmailsSend.php

<?php

 class EmailEnviar {

   private $nomeAlvo;
   private $emailAlvo;
   private $nomeRemete;
   private $emailRemete;
   private $assunto;
   private $mensagem;

   public function __construct(
      $_nomeAlvo, 
      $_emailAlvo, 
      $_nomeRemete, 
      $_emailRemete, 
      $_assunto,
      $_mensagem

      )  {

        $this->nomeAlvo = $_nomeAlvo;
        $this->emailAlvo = $_emailAlvo;
        $this->nomeRemete = $_nomeRemete;
        $this->emailRemete = $_emailRemete;
        $this->assunto = $_assunto;
        $this->mensagem = $_mensagem;
   }

   public function getNomeAlvo () {
       return $this->nomeAlvo;
   }

   public function getEmailAlvo () {
       return $this->emailAlvo;
   }

   public function getNomeRemete () {
       return $this->nomeRemete;
   }

   public function getEmailRemete () {
       return $this->emailRemete;
   }

   public function getAssunto () {
       return $this->assunto;
   }

   public function getMensagem () {
       return $this->mensagem;
   }

}

Email Email.php

<?php

  class EmailEnviarDao {

    public function __construct() {}

    public function enviaEmail($email)  {

      $cabecalhos  = 'MIME-Version: 1.0' . "\r\n";
      $cabecalhos .= 'Content-type: text/html; charset=utf-8' . "\r\n";
      $cabecalhos .= 'To: '.$email->getNomeAlvo().' <'.$email->getEmailAlvo().'>' . "\r\n";
      $cabecalhos .= 'From: '.$email->getNomeRemete().' <'.$email->getEmailRemete().'>' . "\r\n";


      if(mail($email->getEmailAlvo(), $email->getAssunto(), $email->getMensagem(), $cabecalhos)) {

         return array('success'=>'1','errors'=>'0K');

      } else {

          return array('success'=>'0','errors'=>"Não conseguimos enviar o e-mail");

      }    

    }   

  }

?>  
    
asked by anonymous 06.11.2016 / 19:48

2 answers

4

I took a look at your site and the AJAX return.

I saw this:

Atthestartitseemscorrect,OKisthere...ButtheproblemisthatthereisblankspaceandlinebreakbeforeofOK,makingitastringwithmorecharacterswhichonlyOK.

LookingatabreakpointinJavaScriptconfirms:

YouhavetofixthisinPHP.Andthatcodeisnotinthequestion.Somewhereyouaredoinganemptyechoorwithblanks.

To"hide" the problem in JavaScript you can do

success: function(retorno){    
    if (retorno.trim() == "OK") {

or

success: function(retorno){    
    retorno = retorno.split(/\W/).join('');
    if (retorno == "OK") {
    
06.11.2016 / 21:02
0

In ajax there are some functions, one of them the success and the other error.

  $.ajax({
                url: url
                success: function (parametro) { ... }, 
error: function(){....}

use the function error that will help your life.

    
07.11.2016 / 17:27