Serializando um formulário com jQuery


Buenas pessoal!

Hoje vim falar sobre um dos métodos que acho bem interessante no Jquery, o serialize().
Como o próprio nome já diz, esse método serializa um conjunto de inputs de um formulário em uma string.
Essa string é padronizada e compatível com  a maioria das linguagens server-side.
Isso é muito útil por exemplo quando queremos enviar uma série de dados para o servidor com Ajax.

Como fazer?

Bom, começamos criando o formulário:

<form action="minha_pagina.php" id="meu_formulario">
<input type="text" name="input_1">
<input type="text" name="input_2">
<input type="text" name="input_3">
</form>

Note que criamos um formulário de maneira tradicional, porém omitimos o atributo method na tag <form>, pois esse será tratado mais adiante.

Bom, e agora como Serializar?

Com uma linha o Jquery permite que façamos isso, vamos ao exemplo:


var formdata = $("#meu_formulario").serialize();

Agora a variável formdata é uma string serializada mais ou menos como essa:

input_1=valor1&input_2=valor2&input_3=valor3

A string fica com esse formato de chave/valor concatenadas com “&”.
Agora que temos a string, basta passa-la para o servidor. Como fazer isso? De maneira bem simples com o método Ajax() do Jquery:


$.ajax({
type: "POST",
url: form.attr('action'),
data: formdata,
success: function(msg){
alert('Sucesso!');
}
});

Lembram que omitimos o atributo method do form?
Fizemos isso porque estamos fazendo um requisição Ajax usando o método Post, de qualquer maneira ele seria ignorado em nosso exemplo.

Vamos ao Ajax:
type – Especifica o método de como os dados serão enviados ao servidor. Em nosso exemplo estamos usando POST.
url -  Especifica para qual a página os dados serão submetidos. No nosso exemplo estou pegando o atributo action do formulario, o que fará com que os dados sejam submetidos para o arquivo minha_pagina.php.
data – Os dados que serão submetidos. A string serializada é passada aqui.
success – Função que será executada quando obtivermos sucesso. No exemplo, um alerta.

Pronto!

Criamos um formulário, serializamos todos os inputs em uma string, enviamos todos os dados para um página PHP via Ajax.
Simples não?

Por hoje é isso.

Qualquer dúvida postem ai.

<input type=”text” name=”input_1″>

Related Posts:

Creative Commons License
The Serializando um formulário com jQuery by Jaydson Gomes, unless otherwise expressly stated, is licensed under a Creative Commons Attribution 2.5 Brazil License.

subscribe RSS feed!

,

  1. #1 by Ney Estrabelli at 14 de junho de 2009

    Muito bom o tutorial, mas acho que era preciso colocar que ao receber os dados no PHP é preciso fazer o url_decode para os dados não virem com % (porcentagem, etc).

    Abraço

  2. #2 by jaydson at 14 de junho de 2009

    Fala Ney!
    Cara, tenho usado bastante essa técnica em meus projetos e não precisei fazer decode da URL, porque submeto os dados via POST mesmo. Ou seja, no PHP eu recebo tudo na $_POST.
    Tu teve alguma experiência onde precisou usar o url_decode?

  3. #3 by Aprendiz at 30 de julho de 2009

    Pô brow, coloca ai o exemplo para download!!!!

  4. #4 by Newton Calegari at 3 de setembro de 2009

    Ótima explicação sobre o método serialize() do jQuery.
    Quanto a utilização do url_decode para “pegar” os dados no PHP, até agora não foi necessário utilizar.

    Abraços,
    Newton Calegari

(não será publicado)
  1. Sem citações ainda.
Free the web