(AJUDA)[JAVASCRIPT] retorno indesejado da resposta PHP pelo JS
Olá, tudo certo galerinha? Feliz Natal a propósito.
Vamos lá, meu script captura o evento click do form html e envia para o JS para que chame o PHP cadastre e retorne com uma resposta de true ou false que será utilizada pelo SweetAlert para apresentar o alert.
Pelo meu pouco conhecimento nao consigo entender o motivo da response estar trazendo outra página PHP que fiz require para complementar o fluxo sendo que peço para o Json_enconde somente da resposta que é sim, ou nao.
Abaixo os códigos para que possam me ajudar!
const cadRegistroForm = document.getElementById("cad-registro-form");
if (cadRegistroForm) {
JS-----------------------------------------------------------------------------
cadRegistroForm.addEventListener("submit", async (e) => {
e.preventDefault();
const dadosForm = new FormData(cadRegistroForm);
const dados = await fetch("cadastrar.php", {
method: "POST",
body: dadosForm,
});
const resposta = await dados.json();
if (resposta['status']) {
Swal.fire({
text: resposta['msg'],
icon: 'success',
showCancelButton: false,
confirmButtonColor: '#3085d9',
confirmButtonText: 'Fechar'
});
// Limpar o formulário
cadRegistroForm.reset();
signaturePad.clear();
} else {
Swal.fire({
text: resposta['msg'],
icon: 'error',
showCancelButton: false,
confirmButtonColor: '#3085d6',
confirmButtonText: 'Fechar'
});
}
});}
cadastrar.php--------------------------
``<?php
include_once './conexao.php';
include('protect.php');
$dados = filter_input_array(INPUT_POST, FILTER_DEFAULT);
// Validação campos
if (empty($dados['Status'])) {
$retorna = ['status' => false, 'msg' => "Erro: É necessário definir o status!"];
} elseif (empty($dados['NomeCliente'])) {
$retorna = ['status' => false, 'msg' => "Erro: É necessário informar o nome do cliente!"];
} else { //Fim validação
$query_registra = "INSERT INTO BD (NomeCliente, Status) VALUES (:NomeCliente, :Status)";
$cad_registro = $conn->prepare($query_registra);
$cad_registro->bindParam(':NomeCliente', $dados['NomeCliente']);
$cad_registro->bindParam(':Status', $dados['Status']);
$cad_registro->execute();
//variaveis para passar para o envia_email
$id_gerado = $conn->lastInsertId();
$NomeCli = $dados['NomeCliente'];
$Status = $dados['Status'];
if ($cad_registro->rowCount()) {
$retorna = ['status' => true, 'msg' => "Registro efetuado com sucesso!"];
if ($dados['Status'] === 'CONFIRMADO') {
$DestEmail = '[email protected]';
$NomeDest = 'example1';
$TituloEmail = 'Registrado!';
require "enviar_email.php";
}
} else {
$retorna = ['status' => false, 'msg' => $cad_registro->errorInfo()];
}
}
echo json_encode($retorna);
``
O registro no BD e envio do e-mail acontecem normalmente, porem o SWAL nao retorna o alert e no console do navegador imprime o seguinte erro:
``{
Uncaught (in promise) SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
};``
abrindo o erro:
``<!DOCTYPE html>
<html>
<head>
<!--<meta charset="iso 8859-1" />-->
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Envia E-mail</title>
</head>
<body>
Mensagem enviada com sucesso</body>
</html>
{"status":true,"msg":"Registro efetuado com sucesso!"}``
esta retornado tudo isso no JSON sendo que chamei somente a variavel $retorna, onde errei?
agradeço pela ajuda!