none
Invocando Action com Ajax Jquery RRS feed

  • Pergunta

  • Olá pessoal,

    estou tentando chamar uma Action através do Ajax do Jquery, mas toda vez que dou o submit no botão de cadastro não caio dentro da ACTION.

    Detalhe: Já coloquei um ALERTA dentro do "Success" do ajax e funcionou.

    ... Segue meu código:

     <script type="text/javascript" language="javascript">
         $(document).ready(function () {
             $("#btnCadastrarObra").click(function () {
                 $.ajax({
                     type: "POST",
                     url: "/Obras/Cadastro",
                     data: $("#obraCadastro").serialize(),
                 });
             });                          
         });
    </script>
    //                                              
            //GET: /Obras/Cadastro
            [HttpPost]
            public ActionResult Cadastro(FormCollection formulario)
            {
                ObraModel obra = new ObraModel()
                {
                    RESPONSAVEL = formulario["responsavel"],
                    PROPRIETARIO = formulario["proprietario"],
                    ENDERECO = formulario["endereco"],
                    TELEFONE = formulario["telefone"],
                    CELULAR = formulario["celular"],
                    EMAIL = formulario["email"]
                    
                };
    
                ObraClient insert = new ObraClient();
                insert.AddObra(obra);
    
                return View();
    
            }

    Obrigado.

    sexta-feira, 15 de fevereiro de 2013 00:33

Respostas

  • Seu 'btnCadastrarObra' é do type submit?

    Se for coloca um return false no final do click dele:

    $("#btnCadastrarObra").click(function () {
                 $.ajax({
                     type: "POST",
                     url: "/Obras/Cadastro",
                     data: $("#obraCadastro").serialize(),
                 });
    
                 return false;
             });  


    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    • Marcado como Resposta Phellipe_M sexta-feira, 15 de fevereiro de 2013 15:25
    sexta-feira, 15 de fevereiro de 2013 15:23

Todas as Respostas

  • Tenta usar o caminho inteiro na url:

    $.ajax({
         type: "POST",
         url: "@Url.Action("~/Obras/Cadastro")",
         data: $("#obraCadastro").serialize(),
    });
    Verifica tambem se não há nenhum ActionFilter no GlobalFilters.


    http://www.linkedin.com/pub/murilo-kunze/44/191/455


    • Editado Murilo Kunze sexta-feira, 15 de fevereiro de 2013 01:32
    • Sugerido como Resposta Afonso Fernandes sexta-feira, 15 de fevereiro de 2013 07:28
    sexta-feira, 15 de fevereiro de 2013 01:32
  • Tiro esse Filter?

            protected void Application_Start()
            {
                AreaRegistration.RegisterAllAreas();
    
                //RegisterGlobalFilters(GlobalFilters.Filters);
                RegisterRoutes(RouteTable.Routes);
            }

    sexta-feira, 15 de fevereiro de 2013 01:52
  • Não, primeiro tenta fazer aquele Url.Action.. se isso não funcionar dá uma olhada dentro do método RegisterGlobalFilters pra ver se tem algum filtro que intercepta uma action(isso somente se você criou algum manualmente).

    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    • Sugerido como Resposta Afonso Fernandes sexta-feira, 15 de fevereiro de 2013 07:28
    sexta-feira, 15 de fevereiro de 2013 01:55
  • Nada feito.

    Tentei com o @Url.Action... mas nao funcionou.

    Segue o RegisterGlobalFilters

            public static void RegisterGlobalFilters(GlobalFilterCollection filters)
            {
                filters.Add(new HandleErrorAttribute());
            }

    sexta-feira, 15 de fevereiro de 2013 14:22
  • Um detalhe importante que percebi.

    É que assim que clico no submit é chamada novamente a Action que tem o formulário e não a Action do "POST".
    sexta-feira, 15 de fevereiro de 2013 14:54
  • Seu 'btnCadastrarObra' é do type submit?

    Se for coloca um return false no final do click dele:

    $("#btnCadastrarObra").click(function () {
                 $.ajax({
                     type: "POST",
                     url: "/Obras/Cadastro",
                     data: $("#obraCadastro").serialize(),
                 });
    
                 return false;
             });  


    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    • Marcado como Resposta Phellipe_M sexta-feira, 15 de fevereiro de 2013 15:25
    sexta-feira, 15 de fevereiro de 2013 15:23