Receive PHP response in AJAX

Asked

Viewed 372 times

0

Friends, I am developing a script to send an email according to the choices of the users.

Below is the ajax that makes the upload:

$.ajax({
             type: "POST",
             url: "inc/enviar.php", /* endereço do script PHP */
             async: true,
             data: urlData, /* informa Url */
             dataType: 'json',
             success: function(data) { /* sucesso */
                 var json = jQuery.parseJSON(JSON.stringify(data));
                 window.location.replace(json);
                 console.log(json);
             },
             beforeSend: function() { /* antes de enviar */
               $("#bt-normal").hide();
               $("#bt-loading").show();
               $(".popup").show();
             }
         });

And below I’m putting just a few main points of php:

    <?php
header("Content-Type: application/json");
require_once('abreConexao.php');
require_once('PHPMailer/PHPMailerAutoload.php');

// pega os valores e armazena em variavel
$nome = $_POST['nome'];
$email = $_POST['email'];
$telefone = $_POST['telefone'];
$estado = $_POST['estado'];
$id_loja = $_POST['loja'];
$destino = $_POST['destino'];

switch ($estado) {
  case 1: $estado = "AC"; break;
  case 5: $estado = "BA"; break;
  case 6: $estado = "CE"; break;
  case 7: $estado = "DF"; break;
  case 8: $estado = "ES"; break;
  case 10: $estado = "GO"; break;
  case 11: $estado = "MA"; break;
  case 12: $estado = "MT"; break;
  case 14: $estado = "MG"; break;
  case 15: $estado = "PA"; break;
  case 17: $estado = "PR"; break;
  case 18: $estado = "PE"; break;
  case 20: $estado = "RJ"; break;
  case 21: $estado = "RN"; break;
  case 22: $estado = "RS"; break;
  case 25: $estado = "SC"; break;
  case 26: $estado = "SP"; break;
  case 27: $estado = "SE"; break;

}

// faz a busca da loja no banco
$query = "SELECT * FROM lojas WHERE id = $id_loja";
$resultado = mysql_query($query);
$nun_rows = mysql_num_rows($resultado);
    // armazena os dados da loja em variaveis
    while ($linha = mysql_fetch_assoc($resultado)) {
        $nome_loja          = $linha['nome_loja'];
        $email1_loja        = $linha['email1'];
        $email2_loja        = $linha['email2'];
        $email3_loja        = $linha['email3'];
        $email4_loja        = $linha['email4'];
    $cidade_loja    = $linha['cidade'];
    $site_loja      = $linha['site'];

    $nome_loja_completo = $cidade_loja." - ".$nome_loja;

    }

// RD STATION

  if(empty($data_array["client_id"]) && !empty($_COOKIE["rdtrk"])) {
      $data_array["client_id"] = json_decode(urldecode($_COOKIE["rdtrk"]))->{'id'};
    }

$dados = array(
"token_rdstation" => "***************",
"identificador" => "Formulário Principal",
"nome" => $nome,
"email" => $email,
"telefone" => $telefone,
"estado" => $estado,
"cidade" => $cidade_loja,
"loja" => $nome_loja_completo,
"Destino" => $destino,
"subscribe_newsletter" => true,
"client_id" => $data_array["client_id"]
);

$data_string = json_encode($dados);                                                                                   

$ch = curl_init('https://www.rdstation.com.br/api/1.3/conversions');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json'
  )
);
$result = curl_exec($ch);
//$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

// Inicia a classe PHPMailer
$mail = new PHPMailer();
// Define os dados do servidor e tipo de conexão
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->IsSMTP(); // Define que a mensagem será SMTP
$mail->Host = "smtp.gmail.com"; // Endereço do servidor SMTP
$mail->SMTPAuth = true; // Usa autenticação SMTP? (opcional)
$mail->Username = '[email protected]'; // Usuário do servidor SMTP
$mail->Password = '***'; // Senha do servidor SMTP
$mail->SMTPSecure = 'tls'; // tipo de autenticacao tls ou ssl
$mail->Port = 587;  // porta


// Define o remetente
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->From = "[email protected]"; // Seu e-mail
$mail->FromName = "Cliente"; // Seu nome
// Define os destinatário(s)
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

$mail->AddAddress($email1_loja);
if($email2_loja != ""){$mail->AddAddress($email2_loja);}
if($email3_loja != ""){$mail->AddAddress($email3_loja);}
if($email4_loja != ""){$mail->AddAddress($email4_loja);}

$mail->AddBCC('[email protected]');


// Define os dados técnicos da Mensagem
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->IsHTML(true); // Define que o e-mail será enviado como HTML
$mail->CharSet = 'UTF-8'; // Charset da mensagem (opcional)
// Define a mensagem (Texto e Assunto)
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->Subject  = "OPORTUNIDADE DE VENDAS"; // Assunto da mensagem
$mail->Body = '
            <strong>Nome:</strong> '.$nome.'<br>
            <strong>Email:</strong> '.$email.'<br>
            <strong>Telefone:</strong> '.$telefone.'<br>
            <strong>Estado:</strong> '.$estado.'<br>
            <strong>Destino:</strong> '.$destino.'<br>
';

// Envia o e-mail
$enviado = $mail->Send();

// Exibe uma mensagem de resultado
if ($enviado) {
    echo json_encode($site_loja);
} else {
    echo $mail->ErroInfo;
}
?>

The purpose is for PHP to send to AJAX the URL of the site that was stored in the variable $site_loja for when ajax receives this make the redirect. What is happening does not even appear when I put a console.log it simply gives a refresh on the form page

  • If the code you put in the question is the same on your site there is an error here $mail->FromName = "Cliente; // Seu nome as you can see missing a double quote, change $mail->FromName = "Cliente"; maybe that’s the problem

  • 1

    You can add more of your code?

  • I updated with full php. Thank you!!

  • Wéllingthon, the script is doing everything right, sending the email etc... Only what is not rolling is the answer to ajax with the value of the $site_store variable

  • Comment on this line window.location.replace(json); in your javascript, which will no longer refresh the page. And see what will return in the console

  • This line would technically be to do the refresh for the site that comes from php in the $site_store variable

  • Yes, but that’s why you’re not getting the feedback on console.log

  • Even commenting, the console is empty... :/

  • What value of $line['website']?

  • a url: "https://google.com" for example

Show 5 more comments
No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.