JavaScript
Combine dados de POST serializados com um Objeto usando jQuery
Neste artigo mostrarei um artificio que pode ser utilizado em campos INPUT, principalmente naqueles criados dinamicamente. Veremos um exemplo básico de como se usa o método serialize em conjunto com o param do JQUERY.
Às vezes, quando você faz uma chamada AJAX pelo formulário com jQuery, você precisa mesclar outro objeto em seus dados de postagem. A ideia por trás desta solução é serializar os dados do formulário existentes, utilizando o método jQuery's $().serialize ou $().serializeArray(). Eu prefiro este último, mas isso é cada um e como vai ser utilizado.
Então nós usamos o método utilitário $.param () para criar uma versão serializada de qualquer objeto Javascript ou array. Simplesmente concatenando os dois e você está pronto para o uso que desejar.
OBS: A desvantagem dessa abordagem é a possibilidade de nomes-chave duplicadas em sua sequência de serialize. Concatenando as duas cordas, serialize não vai pegar isso. Nesse caso, será melhor transformar os elementos do formulário em um objeto e fundi-las usando $ .extend (). Mas está função não é o foco deste artigo, ficando para uma próxima oportunidade.
O importante para o bom funcionamento deste método é ter os elementos ID dos inputs como ÚNICOS, portanto preste bem atenção neste detalhe.
Pressupondo que você tenha a chamada do AJAX, podemos fazer da seguinte forma:
$(document).ready(function($){ $(open).click(function(){ var valores = $('#formulario').serializeArray(); // #formulario = id do form var href = 'seu-arquivo.php'; $.ajax({ type: "GET", url: href, data: $.param(valores), success: function( data ){ //algum metodo } }); }); });
Este método $.param(valores) deixa os dados como se você estivesse passando um a um, como neste exemplo:
params: { id: name-do-seu-input-id, nome: name-do-seu-input-nome, ...etc, etc, etc }
Esta string ficaria desta forma: “{id: name-do-seu-input-id; nome: name-do-seu-input-nome; etc..etc..etc...}”
Já no seu arquivo PHP chamado neste método, você poderá receber os dados da seguinte forma:
<?php $id = isset($_GET['id']) ? $_GET['id'] : 0; $nome = isset($_GET['nome']) ? $_GET['nome'] : ""; $total = count($id); for($i=0; $i < $total; $i++){ echo 'id : '.$id[$i].'<br/>'; echo 'nome : '.$nome[$i].'<br/>'; } ?>
Precisei deste procedimento porque não era possível usar SESSION e depois de pesquisar muito, consegui resolver meu problema, que era criar campos dinamicamente e depois enviá-los para outra página também criada dinamicamente.
Espero ter ajudado e fiquem ligados nos próximos artigos. Dúvidas, críticas ou sugestões comentem abaixo e bons estudos.=)
Gigasystems Login:
Informe seu e-mail abaixo para continuar!
XVeja Também:
Artigos Relacionados a categoria: JavaScript
API, Framework ou Biblioteca
08 July de 2015
Criando Gráficos com Chart.js com legenda
22 June de 2015
Envio de Formulário com Ajax
03 February de 2015
Alert em Javascript
30 January de 2015
Olá, deixe seu comentário para Combine dados de POST serializados com um Objeto usando jQuery