Inicio > AJAX, ASP .Net, JQuery > Utilizar AJAX con JQuery en ASP .Net

Utilizar AJAX con JQuery en ASP .Net

Martes, 6 de enero de 2009 Dejar un comentario Ir a comentarios

Jquery es un framework javascript bastante bueno, nadie lo puede dudar, y Ajax, es una tecnología que permite crear aplicaciones bastante mas robustas y dinámicas que le dan al usuario una mejor experiencia; al trabajar con una página web será necesario en algún momento combinar ambas tecnologías para conseguir una aplicación al estilo Web 2.0.

Voy a poner a continuación un ejemplo de como utilizar JQuery para hacer invocaciones Ajax en una aplicación ASP .Net. La idea de este ejemplo es simple, cargo un DropDownList de ASP .Net con algunos elementos, en este caso carreras de estudio, además se tiene un segundo DropDownList pero vacío, al seleccionar una carrera, se debe llenar el segundo DropDownList con los cursos que se dicten en la carrera. El resultado debe ser mas o menos como la imágen de la izquierda y el proceso obviamente se debe realizar sin postback. Como siempre, el archivo con el código completo lo pueden conseguir al final del artículo.

La definición de mi primer DropDownList la haré de la siguiente manera:

<asp:DropDownList ID=”ddlCarreras” runat=”server” AppendDataBoundItems=”True” onChange=”listarCursos(this.value);” />

y llenaré dicho DropDownList en el evento Load de la página como normalmente lo haría. En esta definición del control hay un evento de javascript, cuando del lado del cliente yo seleccione un elemento se ejecutará la función listarCursos de javascript, la cual recibe el valor seleccionado.

Ahora, analizaremos lo que hace la función listarCursos de javascript:

        function listarCursos(idCarrera){
            $.ajax({
                type:“POST”,
                url:“Controladores/DevolverDatos.ashx”,
                data:”carrera=” + idCarrera,
                success: mostrarCursos
            });
        }
       
        function mostrarCursos(html){
            $(‘#<%=ddlCursos.ClientID %>’).html(html);
        }

La función listarCursos hace un llamado a través de ajax controlado por jquery indicándole que enviará datos a usando el método POST hacia el archivo DevolverDatos.ashx, que es un controlador HTTP de ASP .Net, luego le indicamos, los datos que queremos enviarles como un par clave=valor separado por el signo igual (=); finalmente le indicaremos a nuestro método ajax que función debe realizar cuando termine de ejecutarse la invocación al controlador ashx, en este caso, se ejecutará el método mostrarCursos, el cual recibe el código html que devuelve el controlador. Esta función lo único que hace es agregar el html que contiene las opciones de un select de html en el DropDownList para cursos.

La estructura de un controlador ASHX es la siguiente:

 Estructura de un manejador HTTP de ASP .Net

y el código que se quiera utilizar para la funcionalidad a realizar se colocará en el método ProcessRequest, y para devolver el html que necesitamos utilizamos context.Response.Write(“Aqui mi texto”);

En el archivo que pueden descargar a continuaciòn esta el ejemplo y ya ustedes podrán personalizarlo a su antojo. Solo es cuestión de ir leyendolo de a pocos.

Descargar Ejemplo JQuery y Ajax

Espero que les sea de utilidad.

Saludos.

Categories: AJAX, ASP .Net, JQuery
  1. Joaquin
    Miércoles, 7 de enero de 2009 a las 16:19 | #1

    La misma funcionalidad se puede lograr colocando los combos en un UpdatePanel, llenando el segundo combo en el evento de cambio del primero y haciendo un Update() al panel, sin tener que usar jQuery ni un archivo ashx extra. ¿Hay alguna diferencia de performance o es lo mismo?
    Hace un tiempo vengo siguiendo tu blog, sigue con los buenos posts broder.

  2. h@nz
    Jueves, 8 de enero de 2009 a las 14:55 | #2

    Hola Joaquin, gracias por tus palabras… te explico.

    Si bien es cierto la misma funcionalidad se puede realizar con el UpdatePanel, lo ideal en ese caso sería colocar solo el segundo DropDownList en el UpdatePanel y agregar un Trigger al UpdatePanel para que funcione con el evento SelectedIndexChanged del primer DropDown.

    La diferencia es que aún al usar el UpdatePanel, se ejecuta nuevamente el evento Upload de la página y se recarga los controles dentro del UpdatePanel, al utilizar el ajax de jquery solo se actualiza la parte que tu le indiques y no se recarga el control por completo.

    Hay una mejora en la performance, pero puedes utilizar cualquiera de las alternativas dependiendo de que vayas a hacer, eso depende de quien lo programa.

    Este ejemplo es solo para mostrar como se puede trabajar con ajax de jquery.

    Saludos.

  3. Juan.Torom
    Domingo, 18 de enero de 2009 a las 15:56 | #3

    Encuentro muy bien este metodo para usar los elementos de asp.net y sus ventajas en lugar de usar los elementos html. Pero veo que limita a usar el codijo js en la misma pagina en lugar de poder ocupar un documento aparte para el codigo js o ¿hay algo que me pierdo? ¿hay alguna posibilidad de ocupar el ‘#’ en un documento js?

  4. Raul Duque
    Martes, 20 de enero de 2009 a las 23:35 | #4

    Buen ejemplo. Sólo quisiera saber si hay forma de NO utilizar ASHX y utilizar WebServices de página?

  5. h@nz
    Viernes, 23 de enero de 2009 a las 17:57 | #5

    @Raul Duque, si hay forma de hacerlo usando JSON, estaba haciendo un post sobre ello, pero el tiempo me esta quedando corto, sin embargo, debe haber info en la red al respecto.. cuestión de buscar.

    Debo apurarme con los posts no?

    Saludos.

  6. Ivan
    Martes, 3 de marzo de 2009 a las 20:09 | #6

    Me sale error de validacion al hacer postback

  7. Cristian
    Lunes, 11 de enero de 2010 a las 14:09 | #7

    Hola.
    Gracias por el articula, excelente. Pero me queda duda si tengo una capa de datos que me devuelve el listado para el combo como hago para cargarselo al combo con jquery?

  8. Ismael
    Martes, 16 de marzo de 2010 a las 23:23 | #8

    Hola, buen post! pequeño pero preciso =D! … esa carrera y ese curso me hace suponer que eres de un instituto que conozco bien de Peru(obviamnt estudio ahi o mejor dicho estudiaba … ) … yo uso callback para eso, pero no lo pongo a jquery por temas de tiempo, que es lo que me falta =S! … mmm haz hecho aplicaciones con extjs ?. Postea uno con ese tema que ya tiene años pero con aspnet no he visto muchas implementaciones en peru, saludos!

  9. abel
    Miércoles, 28 de julio de 2010 a las 21:58 | #9

    Excelente, probe tu ejemplo y trabajo excelente, estoy tratando de actualizarme, solo he realizado paginas tradicionales, y tu ejemplo me sirvio mucho para usar algo de ajax, gracias por tu aporte compare…

  1. Sin trackbacks aún.