Estou tentando enviar dados de um formulário para um banco de dados. Aqui está o formulário que estou usando:
<form name="foo" action="form.php" method="POST" id="foo">
<label for="bar">A bar</label>
<input id="bar" name="bar" type="text" value="" />
<input type="submit" value="Send" />
</form>
A abordagem típica seria enviar o formulário, mas isso faz com que o navegador seja redirecionado. Usando jQuery e Ajax , é possível capturar todos os dados do formulário e enviá-los para um script PHP (por exemplo, form.php )?
Respostas:
O uso básico de
.ajax
seria algo parecido com isto:HTML:
jQuery:
Nota: Desde jQuery 1.8,
.success()
,.error()
e.complete()
são preteridos em favor de.done()
,.fail()
e.always()
.Nota: Lembre-se de que o snippet acima deve ser feito após o DOM estar pronto, portanto, você deve colocá-lo dentro de um
$(document).ready()
manipulador (ou usar a$()
abreviação).Dica: você pode encadear os manipuladores de retorno de chamada assim:
$.ajax().done().fail().always();
PHP (ou seja, form.php):
Nota: sempre desinfete os dados publicados , para evitar injeções e outros códigos maliciosos.
Você também pode usar a abreviação
.post
no lugar do.ajax
código JavaScript acima:Nota: O código JavaScript acima foi criado para funcionar com o jQuery 1.8 e posterior, mas deve funcionar com versões anteriores até o jQuery 1.5.
fonte
request
foi declarado como uma var local, fazendo com queif (request) request.abort();
nunca funcionasse.serialize()
, eles serão ignorados.Para fazer uma solicitação Ajax usando jQuery, você pode fazer isso pelo seguinte código.
HTML:
JavaScript:
Método 1
Método 2
A
.success()
,.error()
e.complete()
chamadas de retorno são obsoleto a partir do jQuery 1.8 . Para preparar o código para a sua eventual remoção, use.done()
,.fail()
e.always()
em vez disso.MDN: abort()
. Se a solicitação já tiver sido enviada, esse método abortará a solicitação.Portanto, enviamos com sucesso uma solicitação do Ajax e agora é hora de coletar dados para o servidor.
PHP
À medida que fazemos uma solicitação POST em uma chamada Ajax (
type: "post"
), agora podemos pegar dados usando$_REQUEST
ou$_POST
:Você também pode ver o que recebe na solicitação POST simplesmente. BTW, verifique se
$_POST
está definido. Caso contrário, você receberá um erro.E você está inserindo um valor no banco de dados. Certifique-se de sensibilizar ou escapar de todas as solicitações (se você fez um GET ou POST) corretamente antes de fazer a consulta. O melhor seria usar declarações preparadas .
E se você quiser retornar qualquer dado de volta à página, poderá fazê-lo apenas ecoando esses dados como abaixo.
E então você pode obtê-lo como:
Existem alguns métodos de taquigrafia . Você pode usar o código abaixo. Faz o mesmo trabalho.
fonte
dataType
), para que você possa aceitar JSON ou algum outro formato?Gostaria de compartilhar uma maneira detalhada de como postar com PHP + Ajax, juntamente com erros retornados por falha.
Primeiro, crie dois arquivos, por exemplo
form.php
eprocess.php
.Primeiro, criaremos um
form
que será enviado usando ojQuery
.ajax()
método O restante será explicado nos comentários.form.php
Valide o formulário usando a validação do lado do cliente jQuery e passe os dados para
process.php
.Agora vamos dar uma olhada
process.php
Os arquivos do projeto podem ser baixados em http://projects.decodingweb.com/simple_ajax_form.zip .
fonte
Você pode usar serializar. Abaixo está um exemplo.
fonte
$.parseJSON()
é um salva-vidas total, obrigado. Eu estava tendo problemas para interpretar minha saída com base nas outras respostas.HTML :
JavaScript :
fonte
Eu uso o caminho mostrado abaixo. Ele envia tudo como arquivos.
fonte
Se você deseja enviar dados usando o jQuery Ajax, não há necessidade de tag de formulário e botão de envio
Exemplo:
fonte
fonte
A manipulação de erros do Ajax e do carregador antes do envio e após o sucesso mostra uma caixa de inicialização de alerta com um exemplo:
fonte
Eu estou usando este código de uma linha simples por anos sem problemas (requer jQuery):
Aqui ap () significa uma página Ajax e af () significa um formulário Ajax. Em um formulário, basta chamar a função af () para publicar o formulário no URL e carregar a resposta no elemento HTML desejado.
fonte
No seu arquivo php, digite:
e no seu arquivo js envie um ajax com o objeto de dados
ou mantenha-o como está no envio do formulário. Você só precisa disso, se desejar enviar uma solicitação modificada com conteúdo adicional calculado e não apenas alguns dados do formulário, que são inseridos pelo cliente. Por exemplo, um hash, um carimbo de data e hora, um ID do usuário, um ID da sessão e similares.
fonte
Por favor, checar isto. É o código de solicitação completo do Ajax.
fonte
Este é um artigo muito bom que contém tudo o que você precisa saber sobre o envio de formulários jQuery.
Resumo do artigo:
Envio simples de formulário HTML
HTML:
JavaScript:
Multipart HTML / formulário de dados Enviar formulário
Para fazer upload de arquivos para o servidor, podemos usar a interface FormData disponível para XMLHttpRequest2, que constrói um objeto FormData e pode ser enviado ao servidor facilmente usando o jQuery Ajax.
HTML:
JavaScript:
Eu espero que isso ajude.
fonte
Desde a introdução da API Fetch, não há mais motivo para fazer isso com o jQuery Ajax ou XMLHttpRequests. Para POST dados de formulário para um script PHP em JavaScript vanilla, você pode fazer o seguinte:
Aqui está um exemplo muito básico de um script PHP que pega os dados e envia um email:
fonte