none
Como passar um objeto JavaScript para metodo Ajax. RRS feed

  • Pergunta

  • E ae pessoal blz?

    Tenho o segunte senario.

            function salvarEmpresa() {
                var oEmpresa = {
                    NmEmpresa: $("#<%= Nome.ClientID %>").val(),
                    NrCnpj: $("#<%= CNPJ.ClientID %>").val(),
                    NmContato: $("#<%= Responsavel.ClientID %>").val(),
                    NrTelefone: $("#<%= Telefone.ClientID %>").val(),
                    DtCadastro: $("#<%= DataCadastro.ClientID %>").val(),
                    StEmpresa: $("input[name$=rbtAtivo]:checked").val(),
                    DsObservacao: $("#<%= Observacoes.ClientID %>").val()
                }
    }
    
                $.ajax({
                    type: 'POST',
                    url: 'EmpresaAjax.asmx/SalvarEmpresa',
                    contentType: "application/json; charset=utf-8",
                    dataType: 'json',
                    data: { 'oCWEmpresa': oEmpresa }
                });

    O que ocorre é que não consigo passar esse objeto oEmpresa como parametro para o metodo ajax que esta no arquivo EmpresaAjax.asmx.

    Segue metodo ajax.

            [WebMethod]
            public int SalvarEmpresa(CWEmpresa oCWEmpresa)
            {
                int nRetorno = 1;
                return nRetorno;
            }

    já fiz o seguinte teste, recebi uma stirng no metodo ajax e passei a string no javascript e funcionou. então o problema e com esse tipo de parametro que estou tentando passar.

    ou se existir outra forma de fazer agradeço,  o que não quero é passar um parametro para cada atributo que quero gravar.

    Desde já agradeço.

    sábado, 27 de outubro de 2012 19:40

Respostas

  • Olá E.Santos.

    É bem tranquilo de fazer isso com jQuery. Veja o exemplo extraído deste link

    // Initialize the object, before adding data to it.
    //  { } is declarative shorthand for new Object().
    var NewPerson = { };
     
    NewPerson.FirstName = $("#FirstName").val();
    NewPerson.LastName = $("#LastName").val();
    NewPerson.Address = $("#Address").val();
    NewPerson.City = $("#City").val();
    NewPerson.State = $("#State").val();
    NewPerson.Zip = $("#Zip").val();
     
    // Create a data transfer object (DTO) with the proper structure.
    var DTO = { 'NewPerson' : NewPerson };
     
    $.ajax({
      type: "POST",
      contentType: "application/json; charset=utf-8",
      url: "PersonService.asmx/AddPerson",
      data: JSON.stringify(DTO),
      dataType: "json"
    });
    

    WebMethod

    [WebMethod]
    public void AddPerson(Person NewPerson)
    {
      ...
    }

    Abraços.

    • Sugerido como Resposta Vitor Mendes segunda-feira, 29 de outubro de 2012 14:23
    • Marcado como Resposta EDUARDO.NS.NUNES quarta-feira, 31 de outubro de 2012 11:57
    segunda-feira, 29 de outubro de 2012 14:18

Todas as Respostas