none
Falha em chamada ajax RRS feed

  • 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

    domingo, 5 de junho de 2016 13:48

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
    quinta-feira, 23 de junho de 2016 18:52
    Moderador

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.

    segunda-feira, 6 de junho de 2016 13:48
  • 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

    terça-feira, 7 de junho de 2016 18:57
  • 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
    quinta-feira, 23 de junho de 2016 18:52
    Moderador
  • 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.

    segunda-feira, 27 de junho de 2016 12:27