Inquiridor
Passar paremtros multiplos - AJAX

Pergunta
-
Boa tarde pessoal, tudo bem?
Então... é o seguinte:Preciso urgentemente descobrir uma forma de passar parametros de um formulario atravez do metodo post via ajax, então tentei o $.POST("../Controller/Metódo) - Só que... estou trabalhando com múltiplos inputs no formulario, gerados todos por jquery, quando clico no botao "adicionar pedido" ele insere pelo append uma nova linha para o formulario, sendo que essa com a sequencia de id e name: "qnt1".."qnt2.." etc... para extrair exatamento aquele value do pedido especifico.
Tentei de tudo já e estou quebrando a cabeça nisso, gostaria muito que me ajudassem a resolver.
Por fim, no meu metodo de [HttpPost] da página eu tentei passar os parametros da seguitne forma:
public ActionResult Index(FormCollection form)(...)
Enfim, nada esta chegando ao meu objeto de FormCollection via ajax =/
Agradeço muito uma solução.
Att
Todas as Respostas
-
-
Ok, mas... e o caso dos inputs no meu formulário que são "colocados" via jquery/ajax ?? Eu não sei como pegar esses parametros distintamente. (values relacionados ao 'id' e 'nome') Uma vez que são 'clonados' devem ter o <input id =id1, <input id=id2 ... diferentes, com diferenets values, preenchido pelo usuário!
-
Na verdade isso é bem simples, existem varias maneiras de fazer isso.
Caso esses campos estejam todos dentro de uma tag <form> você pode buscar esse form e serializar ele, e passar como parametro no assim:
$.post( "Controller/Action", $( "#form" ).serialize());
caso eles não estejam você precisa fazer com que os campos gerados sejam de uma determinada classe, por ex:
<input id =id1" class="auto-inputs"> , <input id =id2" class="auto-inputs"> ,
e depois buscar eles utilizando o jquery.
var inputArray = new Array(); var inputs = $(".auto-inputs").each(function(input){ inputArray.push({"id":$(input).attr("id"),"valor":$(input).val()}); });
dai passar o array como parâmetro do post
$.post( "Controller/Action",inputArray);
- Editado Jonatas Wesley Gonçalves terça-feira, 11 de fevereiro de 2014 17:50 corrigindo ctrl + c e ctrl+v
-
Amigo, eu até consegui utilizando a primeira forma
$.post( "Controller/Action", $( "#form" ).serialize());
Porem, eu não sei como tratar a "id" em especifico, preciso passar exatamente qual estou inserindo.
Veja se isso ajuda a entender:
$(document).ready(function () { var ct = 0; $("#btPedido").click(function () { ct = ct + 1; $("#pedidoLista").append( (...)
Ou seja, eu utilizo um contador crescente para especificar a id... como faço para passar o mesmo p/ meu metodo?
Obrigado. -
Kra, eu não tenho certeza, pois nunca testei isso no ASP.NET, mas pelo que eu entendo de web,
quando você envia um formulário ele envia o valor do parâmetro name e do value, por ex:<input type="text" id="tanto-faz" name="nome" value="johnny" />
<input type="text" id="tanto-faz" name="sobrenome" value="teste" />ai na requisição GET ou POST ele vai enviar algo do tpw, nome=johnny e sobrenome=teste.
trazendo isso para o asp.net, você teria uma Action que recebesse dois parametros (nome,sobrenome) ou um objeto com duas propriedades com esses nomes.
tpw:
respondendo sua pergunta eu acho que a melhor maneira de você passar esses ids seria definindo o atributo name dos seus inputs.public ActionResult SampleAction(string nome, string sobrenome)
ou
public ActionResult SampleAction(Pessoa p)