Usuário com melhor resposta
Falha em chamada ajax

Pergunta
-
Pessoal, estou com um problema para fazer uma chamada de eventos serverside via ajax.
Tenho a seguinte situação:
Existe um formulário na minha aplicação que abre uma popup para localizar endereços.
Ao selecionar o endereço na popup, deve ser preenchido o formulário de cadastro que chamou a popup.
Meu problema é que para preencher o formulário, eu preciso chamar um evento para preencher um dropdown com a lista de cidades com base na UF do endereço selecionado, para depois selecionar a cidade.
//Evento da popoup "Busca CEP" que seleciona a linha na grid
protected void gvAssociados_SelectedIndexChanging(object sender, GridViewSelectEventArgs e) { GridViewRow row = ((GridView)sender).Rows[e.NewSelectedIndex]; Session["LOCEND.UF"] = HttpUtility.HtmlDecode(row.Cells[0].Text); Session["LOCEND.CIDADE"] = HttpUtility.HtmlDecode(row.Cells[1].Text); Session["LOCEND.BAIRRO"] = HttpUtility.HtmlDecode(row.Cells[2].Text); Session["LOCEND.LOGRADOURO"] = HttpUtility.HtmlDecode(row.Cells[3].Text); Session["LOCEND.CEP"] = HttpUtility.HtmlDecode(row.Cells[4].Text); Session["LOCEND.IDUF"] = HttpUtility.HtmlDecode(row.Cells[5].Text); Session["LOCEND.IDCIDADE"] = HttpUtility.HtmlDecode(row.Cells[6].Text); ScriptManager.RegisterClientScriptBlock(Page, Page.GetType(), "salvar", @"Fechar();", true); }
//Evento javascript que fecha a popoup e dispara evento para preencher formulario pai
function Fechar() { window.opener.SelecionarEndereco(); window.close(); }
//Evento javascript disparado apos o fechamento da popup para preencher os campos
function SelecionarEndereco() { $.ajax ( { type: "POST", url: "<%=Request.Url.AbsoluteUri%>/SelecionarEndereco", data: "{}", contentType: "application/json;charset=utf-8", dataType:"json", async: true, cache: false, success: function (endereco) { debugger; AtualizarComboCidades(endereco.IdUf); }, error: function (x, e) { alert("Falha ao resgatar dados da consulta." + x.responseText); } } ); }
É aqui que esta ocorrendo o erro:
Não chega a chamar o o método server side e exibe o codigo html da pagina como erro
--------------------------- Mensagem da página da web --------------------------- Falha ao resgatar dados da consulta. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head><title> AFPCESP </title> <script language="javascript" type="text/javascript" src="Js/funcoes.js"></script> <script language="javascript" type="text/javascript" src="Js/jquery-1.4.4.min.js"></script> <script language="javascript" type="text/javascript" src="Js/jquery.meio.mask.min.js"></script> <script language="javascript" type="text/javascript"> function disableEnterKey(e) { var key; if (window.event) key = window.event.keyCode; //IE else key = e.which; //firefox return (key != 13); } </script> <!--estilo site--> <link rel="Stylesheet" type="text/css" href="App_Themes/associacao/associacao.css" /> <link rel="Stylesheet" type="text/css" href="App_Themes/associacao/tabs.css" /> <script language="javascript" type="text/javascript"> $(document).ready(function () { $("input:text[id*='txtDataNascimento']").setMask('99/99/9999'); $("input:text[id*='txtDataFalecimento']").setMask('99/99/9999'); $("input:text[id*='txtCpf']").setMask('999.999.999-99'); $("input:text[id*='txtDataEmissao']").setMask('99/99/9999'); $("input:text[id*='txtDataServicoPulico']").setMask('99/99/9999'); $("input:text[id*='txtDataAfpcesp']").setMask('99/99/9999'); $("input:text[id*='txtDataProdesp']").setMask('99/99/9999'); $("input:text[id*='txtDataExclusao']").setMask('99/99/9999'); setMaskTel(); $("input:text[id*='txtRamal']").setMask('999999'); $("input:text[id*='txtDataNscimentoDependente']").setMask('99/99/9999'); $("input:text… --------------------------- OK ---------------------------
//Evento que seria chamado que preenche os campos do formulario pai
[WebMethod] public static BuscaEndereco SelecionarEndereco() { BuscaEndereco endereco = new BuscaEndereco(); if(HttpContext.Current.Session["LOCEND.BAIRRO"] != null) endereco.Bairro = HttpContext.Current.Session["LOCEND.BAIRRO"].ToString(); if (HttpContext.Current.Session["LOCEND.IDUF"] != null) endereco.IdUf = Convert.ToInt16(HttpContext.Current.Session["LOCEND.IDUF"]); if (HttpContext.Current.Session["LOCEND.UF"] != null) endereco.SiglaUf = HttpContext.Current.Session["LOCEND.UF"].ToString(); if (HttpContext.Current.Session["LOCEND.IDCIDADE"] != null) endereco.IdCidade = Convert.ToInt32(HttpContext.Current.Session["LOCEND.IDCIDADE"]); if (HttpContext.Current.Session["LOCEND.CIDADE"] != null) endereco.NomeCidade = HttpContext.Current.Session["LOCEND.CIDADE"].ToString(); if (HttpContext.Current.Session["LOCEND.LOGRADOURO"] != null) endereco.Logradouro = HttpContext.Current.Session["LOCEND.LOGRADOURO"].ToString(); if (HttpContext.Current.Session["LOCEND.CEP"] != null) endereco.Cep = HttpContext.Current.Session["LOCEND.CEP"].ToString(); HttpContext.Current.Session["LOCEND.BAIRRO"] = null; HttpContext.Current.Session["LOCEND.IDUF"] = null; HttpContext.Current.Session["LOCEND.UF"] = null; HttpContext.Current.Session["LOCEND.IDCIDADE"] = null; HttpContext.Current.Session["LOCEND.CIDADE"] = null; HttpContext.Current.Session["LOCEND.LOGRADOURO"] = null; HttpContext.Current.Session["LOCEND.CEP"] = null; return endereco; }
//funcao javascript que vai chamar metodo server side para preencher combo de cidades
function AtualizarComboCidades(uf) { $.ajax({ type: "POST", url: "<%=Request.Url.AbsoluteUri%>/BuscarListaCidades", data: '{uf: "' + uf + '" }', contentType: "application/json; charset=utf-8", dataType: "json", success: function (response) { debugger; for (var i in response) { AddOption(response[i].Name, response[i].value); } }, failure: function () { alert("Failed!"); } }); }
//Evento que vai preencher o drop down de cidades após selecionar uf
[WebMethod] public static List<Cidade> BuscarListaCidades(short uf) { List<Cidade> lista = null; using (CidadeBusiness business = new CidadeBusiness()) lista = business.ListarCidades(new AFPCESP.DAL.Entity.Cidade() { IdUf = uf }); return lista; }
Alguem sabe me dizer o que esta ocasionando esse erro?
Otavio
Respostas
-
Boa tarde Otavio Camargo,
As outras partes do seu código acima estão funcionando?
Se você puder especificar ou estreitar mais, qual é exatamente a linha de código que não funciona?
Atenciosamente.
Robson William Silva
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
- Marcado como Resposta Thales F Quintas segunda-feira, 27 de junho de 2016 12:27
Todas as Respostas
-
Bom dia Otavio Camargo,
Você debugou o código??
Abraço.
Thales F Quintas
Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita
TechNet Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
-
Já, mas ainda não compreendi o problema.
Depois de fechar a popup, esta chamando a função javascript SelecionarEndereco(), mas não chega a chamar a função server side.
No debug passa direto pela linha "$.ajax({" e sai da função emitindo a mensagem com o código html da página que postei acima.
Isso pode ser problema na maneira como estou chamando a função?
Na chamada Ajax esta como "POST", mas no método server side tenho apenas o atributo "WebMethod".
Tenho que de alguma forma especificar que a requisição virá via post ou get no lado do C#?
Otavio
-
Boa tarde Otavio Camargo,
As outras partes do seu código acima estão funcionando?
Se você puder especificar ou estreitar mais, qual é exatamente a linha de código que não funciona?
Atenciosamente.
Robson William Silva
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
- Marcado como Resposta Thales F Quintas segunda-feira, 27 de junho de 2016 12:27
-
Bom dia,
Por falta de retorno, esta thread será encerrada.
Caso seja necessário, por gentileza, abra uma nova thread.
Atenciosamente
Thales F Quintas
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
TechNet Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.