ASP.NET ejecutar metodo a travez de AJAX

publicado por: Anonymous

Hola estoy aprendiendo a usar AJAX en ASP NET, quiero ejecutar un método a traves de js, pero no estoy seguro como referenciarlo,el metodo que deseo est aen mi controlador pero cuando le doy la ruta no me dice que no encuentra nada.

_x000D_

_x000D_

@model PCotiza_compras.Models.Departments_x000D_
@{_x000D_
    ViewBag.Title = "Kyo_2";_x000D_
_x000D_
}_x000D_
<script src="~/Scripts/jquery-1.10.2.js"></script>_x000D_
<div id="Content"></div>_x000D_
<input type="button" name="name" value="try" onclick="DepListQuery()" />_x000D_
_x000D_
<script>_x000D_
_x000D_
    function DepListQuery() {_x000D_
_x000D_
        $.ajax({_x000D_
            type: 'POST',_x000D_
            url: '../../Controllers/HomeController/.GetData()', //aquí no sé si estoy bien D:_x000D_
            contentType: "application/json; charset=utf-8",_x000D_
            dataType: "json",_x000D_
            success: function (response) {_x000D_
                    _x000D_
                $("#Content").text(response.d);_x000D_
            },_x000D_
            failure: function (response) {_x000D_
                alert(response.d);_x000D_
            }_x000D_
        });_x000D_
    }_x000D_
_x000D_
</script>

_x000D_

_x000D_

_x000D_

Y este es el método en mi controller

_x000D_

_x000D_

 [Authorize]_x000D_
        public ActionResult Kyo2()_x000D_
        {_x000D_
          _x000D_
_x000D_
                return View();_x000D_
_x000D_
_x000D_
        }// End Get/kyo 2_x000D_
_x000D_
        [WebMethod]_x000D_
        public static string GetData()_x000D_
        {_x000D_
            return "This string is from Code behind";_x000D_
        }

_x000D_

_x000D_

_x000D_

Muchas grácias a todos por su ayuda 🙂

solución

Primero, en tu backend:

[WebMethod]
public static string GetData()
{
    return "This string is from Code behind";
}

Por:

[HttpGet]
public ActionResult GetData()
{
    return Content("This string is from Code behind");
}

Ahora, en el frontend, en tu JavaScript, reemplaza:

url: '../../Controllers/HomeController/.GetData()'

Por:

url: '@Url.Action("GetData","Home")'

Ten en mente que usar un AJAX type: 'POST' va con un [HttpPost] en el controlador.

Al emplear un action con el atributo [HttpGet] en el controlador, hace que un AJAX sea type: 'GET'

Edición

Reemplaza:

$("#Content").text(response.d);

Por:

$("#Content").text(response);

Motivo:

Estás obteniendo un string directo por lo que la propiedad “d” está sin definición.

Finalmente, te sugiero que lleves unas clases en https://mva.microsoft.com sobre ASP.net MVC, de la misma manera, aquí te dejo un workshop que realizamos con la hermandad de StackOverflow en Español: https://www.youtube.com/watch?v=6LZG76aLykY el código de aquel proyecto se encuentra en GitHub en la descripción del video.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published.