Ir para conteúdo
Fórum Script Brasil
  • 0

Usando formData do JavaScript para enviar uma solicitação POST para o PHP


Frank K Hosaka

Pergunta

** O código abaixo tem problema, ele só funciona uma vez. A Gemini disse que eu não consegui encerrar o código, estou procurando outro código JavaScript que funcine pelo menos umas cinco vezes ***

Existem muitos exemplos de JavaScript que simulam a requisição POST para o PHP, mas a maioria não deixa o PHP utilizar a variável $_POST.

Acho que esse é o único caso em que o PHP pode pegar as informações pela variável $_POST:

arquivo index.html
<script>
async function teste() {
  nome=nome.value
  email=email.value
  formData=new FormData()
  formData.append('nome',nome)
  formData.append('email',email)
  resposta = await fetch("config.php", { method: "POST", body: formData })
  servidor = await resposta.json()
  php.innerHTML=servidor.mensagem
}
</script>
<table style="width:500px;margin:0 auto">
<tr><td>Nome<td><input id="nome" value="Frank">
<tr><td>Email<td><input id="email" value="frank@gmail.com">
<tr><td><td><input type="submit" onclick="teste()">
<tr><td><td id="php">
</table>

arquivo config.php
<?php
$nome=$_POST['nome'];
$email=$_POST['email'];
$resposta=['mensagem'=>"Dados recebidos: $nome, $email"];
echo json_encode($resposta);

 

Editado por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0
Postado (editado)

Encontrei outro código javascript, mas ele tem o mesmo problema que o anterior, eu não sei como encerrar a função assíncrona, mas pelo menos esse código roda pelo menos cinco vezes da maneira esperada:

arquivo /Astudy/config.php
<?php
session_start();
$mysqli=new mysqli("localhost","root","","diario");
if(isset($_POST)) {
    $email=$_POST['email'];
    $senha=$_POST['senha'];
    $query=$mysqli->query("select * from tbusuario where email='$email'");
    $usuario=$query->fetch_assoc();
    $validaEmail=$usuario['email'];
    if(!$validaEmail) {
        echo "Dados inválidos";
        exit;
    }
    $confirmar=$usuario['password'];
    $validaSenha=password_verify($senha,$confirmar);
    if(!$validaSenha) {
        echo "Dados inválidos!";
        exit;
    }
    $_SESSION['id']=$usuario['id'];
    $_SESSION['nome']=$usuario['name'];
    echo "liberado";
}

arquivo /Astudy/index.html
<title>Projeto HTML</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
<script>
function verificar() {
  xmlhttp=new XMLHttpRequest();
  url = "config.php";
  formData = new FormData(document.getElementById("formLogin"));
  xmlhttp.open("POST",url,true);
  xmlhttp.send(formData);
  xmlhttp.onreadystatechange=function(){
    if (xmlhttp.readyState==4 && xmlhttp.status==200){
      if(xmlhttp.responseText=="liberado"){
        window.location.href="ola.html"
      }
      mensagem.innerHTML=xmlhttp.responseText;
    }
  }
}
</script>
<body class="d-flex text-center bg-light">
<main class="w-25 m-auto">
  <form id="formLogin" action="javascript:void(0)">
    <h1 class="h3 mb-3 fw-normal">Projeto HTML</h1>
    <div id="mensagem"></div>
    <div class="form-floating">
      <input type="email" class="form-control" name=email id=email autofocus required>
      <label for="floatingInput">Email</label>
    </div>
    <div class="form-floating">
      <input type="password" class="form-control" name="senha" id="senha" required
        ondblclick="senha.type='text'">
      <label for="floatingPassword">Duplo click para ver a Senha<label>
    </div>
    <input class="w-100 btn btn-lg btn-primary" type="submit" value="Entrar" onclick="verificar()">
  </form>
</main></body>

arquivo /Astudy/ola.html
<meta charset="utf-8">
<h1>Olá, mundo!</h1>

 

Editado por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...