Mais
jQuery Ajax POST exemplo com PHP
Estou a tentar enviar dados de um formulário para uma base de dados. Aqui está o formulário que estou a usar:
<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 submeter 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's e enviá-lo para um script PHP (um exemplo, form.php)?
652
3
O uso básico de
.ajax
seria algo parecido com isto:HTML:
jQuery:
Note: Desde jQuery 1.8,
.success()
,.error()
e.complete()
são depreciados em favor de.done()
,.fail()
e.always()
.Note: Lembre-se que o trecho acima tem que ser feito após o DOM pronto, então você deve colocá-lo dentro de um
$(document).ready()
handler (ou utilizar o$()
shorthand).Tip: Você pode cadeia os manipuladores de chamadas como este:
$.ajax().done().fail().always();
PHP (isto é, form.php):
Note: Always sanitize dados postados, to prevent injections and other malicious code.
Você também poderia utilizar o estenógrafo
.post
no lugar de.ajax
no código JavaScript acima:Note: O código JavaScript acima é feito para funcionar com jQuery 1.8 e posteriores, mas deve funcionar com versões anteriores até jQuery 1.5.
Para fazer um pedido Ajax usando jQuery você pode fazer isso através do seguinte código.
HTML:
JavaScript:
**Método 1***
**Método 2***
Os
.success()
,.error()
, e.complete()
callbacks são depreciados a partir de jQuery 1.8. Para preparar seu código para sua eventual remoção, utilize.done()
,.fail()
, e.always()
em seu lugar.MDN: abortar()` . Se o pedido já tiver sido enviado, este método abortará o pedido.
Então, enviamos com sucesso um pedido Ajax, e agora é hora de pegar os dados para o servidor.
**PHP***
Como fazemos um pedido POST numa chamada Ajax (
type: "post"
), podemos agora obter dados utilizando$_REQUEST
ou$_POST
:Você também pode ver o que você recebe no pedido do POST simplesmente por um ou outro. BTW, certifique-se de que
$_POST
está definido. Caso contrário, você receberá um erro.E você está inserindo um valor na base de dados. Certifique-se de que você está sensibilizando ou escaping Todos os pedidos (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 quaisquer dados de volta à página, você pode fazê-lo apenas ecoando esses dados como abaixo.
E depois podes conseguir como:
Há um par de métodos abreviados. Você pode usar o código abaixo. Ele faz o mesmo trabalho.
Você pode usar a seriedade. Abaixo está um exemplo.