SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
14.03.2025

Submissão de Formulário Sem Recarregar a Página: Uma Solução em PHP

Visão Geral Rápida

Para submeter um formulário sem recarregar a página, recomenda-se usar AJAX e a função fetch():

document.querySelector('form').onsubmit = async e => {
    e.preventDefault();
    let response = await fetch('submit.php', {
        method: 'POST',
        body: new FormData(e.target)
    });
    let result = await response.text();
    console.log(result);
};

Substitua 'submit.php' pelo endereço do seu script no servidor. Os dados serão enviados de forma assíncrona, sem recarregar a página.

Trabalhando de Forma Discreta com Iframes

Se o AJAX não for suportado no seu ambiente de execução, você pode usar um iframe e trabalhar de forma discreta:

  • Crie um iframe, atribua um nome a ele e o oculte usando a propriedade CSS display:none.
  • Defina o atributo target do formulário para o nome do iframe criado, para que ele receba a resposta do servidor.
  • Aponte o atributo action para o seu script PHP que processará os dados.
  • Defina o método de envio de dados como POST para maior segurança e eficiência.
<iframe name="hidden_frame" id="hidden_frame" style="display: none;"></iframe>
<form action="submit.php" method="post" target="hidden_frame">
    <!-- Campos do formulário - tarefas para nosso agente oculto -->
</form>

Navegação na Página Sem AJAX

A API FormData é excelente para cenários onde o AJAX não é aplicável. É uma solução moderna para interações no navegador:

let formData = new FormData(document.querySelector('form'));
// JavaScript adicional pode ser adicionado aqui para gerenciar o envio de dados

Lidando com Respostas: Uma Abordagem em JavaScript

Não há prazer maior do que receber uma resposta positiva. Veja como o JavaScript processa essa alegria:

function notify(message) {
    console.log(message);
}

Você pode usar essa função em conjunto com o iframe:

document.getElementById('hidden_frame').onload = function() {
    notify('O formulário foi submetido com sucesso!');
};

Intercambiabilidade: Reconhecendo os Principais Elementos

  • Usar um iframe é uma abordagem simples sem interação direta entre cliente e servidor.
  • Combinar fetch() e FormData permite uma manipulação flexível de dados de formulários multipartes.
  • Não se esqueça da segurança ao desenvolver scripts no servidor (submit.php).

Visualização

Submeter um formulário pode ser tão calmo quanto um mar tranquilo:

Formulário Web (📬) -> Requisição AJAX (🏃‍♂️) -> Servidor (🏠)

O executor do AJAX transmite os dados cuidadosamente, e as ondas de recarregamentos não perturbam o usuário:

$('form').on('submit', function(e) {
    e.preventDefault();
    $.ajax({});
});

Tudo permanece calmo e a vida na página continua inalterada. Navegação suave! 🚫🔔

Otimização e Dicas Úteis

Gerenciando Sucesso e Tratamento de Erros

Erros tratados corretamente ajudam a manter o equilíbrio:

fetch('submit.php', {
    method: 'POST',
    body: new FormData(document.querySelector('form'))
}).then(response => {
    if (!response.ok) {
        throw new Error('Elemento inesperado na resposta do servidor');
    }
    return response.text();
}).then(text => {
    console.log('O formulário chegou ao seu destino com sucesso:', text);
}).catch(error => {
    console.error('Ocorreu um erro durante a submissão:', error);
});

Desempenho e Cache

O AJAX permite desabilitar o cache para que cada requisição ao servidor esteja atualizada:

$.ajax({
    url: 'submit.php',
    type: 'POST',
    data: new FormData($('form')[0]),
    cache: false,
    contentType: false,
    processData: false,
    success: function(data) {
        console.log(data);
    }
});

Liberando Recursos Após Ações

Após trabalhar com o iframe, certifique-se de liberar os recursos ocupados:

let iframe = document.getElementById('hidden_frame');
iframe.onload = function() {
    iframe.parentNode.removeChild(iframe);
};

Recursos Úteis

  1. jQuery.ajax() | Documentação da API jQuery - Descrição dos métodos AJAX em jQuery.
  2. Fetch API - APIs Web | MDN - Informações detalhadas sobre a Fetch API para requisições de rede.
  3. GitHub - axios/axios: Cliente HTTP baseado em promessas para o navegador e node.js - Axios, um poderoso cliente HTTP baseado em promessas.
  4. Serializar dados de formulário em uma string de consulta - Serialização de dados de formulário para requisições AJAX.
  5. XMLHttpRequest - APIs Web | MDN - XMLHttpRequest para requisições assíncronas.
  6. Métodos jQuery AJAX get() e post() - Instrução sobre os métodos get() e post() em jQuery.
  7. FormData - APIs Web | MDN - A API FormData para trabalhar com dados de formulários.

Video

Did you like this article? Rate it from 1 to 5:

Thank you for voting!