none
Passar paremtros multiplos - AJAX RRS feed

  • 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

    terça-feira, 11 de fevereiro de 2014 16:28

Todas as Respostas

  • Prezado,

    Acredito que utilizando [HTTPGET].

    Uma outra solução seria usar WEBSERVICES.

    Abçs

    terça-feira, 11 de fevereiro de 2014 16:43
  • 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!

    terça-feira, 11 de fevereiro de 2014 17:19
  • 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);

    terça-feira, 11 de fevereiro de 2014 17:49
  • 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.

    quarta-feira, 12 de fevereiro de 2014 13:22
  • 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:

    public ActionResult SampleAction(string nome, string sobrenome)

    ou

    public ActionResult SampleAction(Pessoa p)

    respondendo sua pergunta eu acho que a melhor maneira de você passar esses ids seria definindo o atributo name dos seus inputs.
    quarta-feira, 12 de fevereiro de 2014 17:48