none
Chamadas de ajax com jquery RRS feed

  • Pergunta

  • Boa tarde

    Estou fazendo testes na empresa de modo a usar o ASP MVC 2 no desenvolvimento de uma nova aplicação mas ainda estou com alguns problemas.

    O atual é o seguinte:

    Na MasterPage eu quero mostrar os dados do usuário logado e para isso fiz uma chamada via ajax no evento onload() da página:

     

    <body onload="CheckSession()">

     

    A função javascript CheckSession() possui o seguinte código:

     

    function CheckSession() {
      $.ajax({
        type: "POST",
        url: "Home/CheckSession",
        data: null,
        success: function (result) {
          if (!result) {
            ShowLoginPanel(true);
            $('#nav-bar').html('');
          } else {
            ShowUserInfo(result);
            MakeMenu();
          }
        }
      });
    }

    O método CheckSession do Controller Home retorna um JSON com os dados do usuário logado de modo que a função javascript ShowUserInfo(result) mostra estes dados na tela.

    Até aí tudo está funcionando tranquilamente, mas apenas se eu estiver na página inicial, ou seja no http://localhost:xxxx/

    Caso eu tente especificar qualquer outro Controller ou Action não há acesso ao servidor. Por exemplo, se eu acessar o endereço http://localhost:xxxx/Home/About a função javascript é executada mas não é feito o acesso ao servidor, ou seja, ao método CheckSession do Controller Home.

    Uma situação estranha é que se eu acesso http://localhost:xxxx/Home o ajax executa mas se eu acesso http://localhost:xxxx/Home/ (com / no final) o ajax não executa.

    Já estou há algum tempo com esse problema e não consigo entender o que acontece. Já tentei limpar o cache a cada chamada mas não resolve o problema.

    Alguém já passou por essa situação?

     

    Obrigado!

     

    segunda-feira, 7 de fevereiro de 2011 17:58

Respostas

  • Obrigado pela resposta!

    Mas essa maneira só funciona se o código javascript estiver dentro da MasterPage e no meu caso está em um arquivo separado onde eu organizo todos os scripts a serem usados.

    Quebrei a cabeça até entender que realmente o erro é simples:

    url: "/Home/CheckSession",
    

    Era só colocar o / na frente. Neste caso a chamada vai ser feita sempre da raiz da aplicação, independente de qual controller estiver sendo acessado.

    Por enquanto resolveu.

     

    Mais uma vez obrigado pelas respostas!

    Abraço

    • Marcado como Resposta Leidival terça-feira, 8 de fevereiro de 2011 13:52
    terça-feira, 8 de fevereiro de 2011 13:52

Todas as Respostas

  • Tenta assim

     url: "~/Home/CheckSession",

    Não esqueça de usar o componente </> na barra para posta seu código.
    segunda-feira, 7 de fevereiro de 2011 18:26
  • Obrigado pela resposta amigo, mas não resolveu!
    segunda-feira, 7 de fevereiro de 2011 18:40
  • O certo é assim:

    url: "<%= Url.Content("~/Home/CheckSession") %>",
    terça-feira, 8 de fevereiro de 2011 00:58
    Moderador
  • Obrigado pela resposta!

    Mas essa maneira só funciona se o código javascript estiver dentro da MasterPage e no meu caso está em um arquivo separado onde eu organizo todos os scripts a serem usados.

    Quebrei a cabeça até entender que realmente o erro é simples:

    url: "/Home/CheckSession",
    

    Era só colocar o / na frente. Neste caso a chamada vai ser feita sempre da raiz da aplicação, independente de qual controller estiver sendo acessado.

    Por enquanto resolveu.

     

    Mais uma vez obrigado pelas respostas!

    Abraço

    • Marcado como Resposta Leidival terça-feira, 8 de fevereiro de 2011 13:52
    terça-feira, 8 de fevereiro de 2011 13:52