Usuário com melhor resposta
Como passar um objeto JavaScript para metodo Ajax.

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.
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
Todas as Respostas
-
E.SANTOS,
Os objetos sao os mesmos?
Verifique estes dois links para ver se te ajuda:
http://www.mikesdotnetting.com/Article/182/Entity-Framework-Code-First-Development-With-WebMatrix
- Sugerido como Resposta Vitor Mendes segunda-feira, 29 de outubro de 2012 14:23
-
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