none
Enviar un List de respuesta por ajax ? RRS feed

  • Pregunta

  • Hola, tengo una duda respecto al envio de datos en respuesta al navegador via ajax.

    Tengo un WebMethod que retorna un list

    [WebMethod]
    public static List<Cliente> listar()
    {
        Cliente ctl = new Cliente();
        clt.nombre = "Alonso";
    
        List<Cliente> list = new List<Cliente>();
        list.Add(clt);
    
        return list;
    }    
    
    
    

    Luego una funcion que recibe la respuesta el webmethod js:

    function sucsess(data) {
        
      var list = data.d;
      $.each(list, function (index, item) {
               console.log(item.nombre);
            });
    }
     
    


    Esto funciona, pero mi duda es: Cómo es que se puede enviar un List de c# hacia el naveador y que este lo reconozca como texto ?  (por que hasta donde se, las peticiones y respuestas ajax viajan todas en formato texto, o me equivoco ?)

    Que diferencia hay entre retornar List y un jsonArray de c# hacia el navegador ?

    sábado, 27 de mayo de 2017 6:35

Respuestas

  • hola

    >>Cómo es que se puede enviar un List de c# hacia el naveador y que este lo reconozca como texto ?

    Pero en el cliente como invocas al webmethod ? porque alli solo defines el success pero es importante conocer que al usar el $.ajax indicas un dataType que esperas recibir en donde seguramente indicas que sera json

    la comunicacion entre el webmethod y el browser esta claro que los datos se serializan a string para que puedan viajarar por http

    solo que el $.ajax luego intepreta el tipo de datos y puede trabajar el formato json, es por eso que aplicas el $.each directamente sin tener que usar el JSON.Parse()

    >>Que diferencia hay entre retornar List y un jsonArray de c# hacia el navegador ?

    entiendo que la diferencia seria en los tipos de datos que puedes asignar, una lista generica hace mas tipado los datos al definirle una clase, en cambio el jsonArray podrias poner distintos tipos de objetos, pero no tendrias intellisense

    recomendacion, si puedes usar el list sigue usandolo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 29 de mayo de 2017 11:03

Todas las respuestas

  • Realmente lo que se envía ES texto. Lo que hace el servidor es convertir el contenido del List en JSON, de este tipo:

    [{"campo1":"valor1", "campo2":"valor2", ...}, { ... }, ...]

    Cuando eso lo recibes en "data", el JSON se deserializa en una variable de javascript, y la variable te permite iterar por los elementos del array y acceder a sus campos, gracias al tipado dinámico de javascript.

    sábado, 27 de mayo de 2017 7:44
  • hola

    >>Cómo es que se puede enviar un List de c# hacia el naveador y que este lo reconozca como texto ?

    Pero en el cliente como invocas al webmethod ? porque alli solo defines el success pero es importante conocer que al usar el $.ajax indicas un dataType que esperas recibir en donde seguramente indicas que sera json

    la comunicacion entre el webmethod y el browser esta claro que los datos se serializan a string para que puedan viajarar por http

    solo que el $.ajax luego intepreta el tipo de datos y puede trabajar el formato json, es por eso que aplicas el $.each directamente sin tener que usar el JSON.Parse()

    >>Que diferencia hay entre retornar List y un jsonArray de c# hacia el navegador ?

    entiendo que la diferencia seria en los tipos de datos que puedes asignar, una lista generica hace mas tipado los datos al definirle una clase, en cambio el jsonArray podrias poner distintos tipos de objetos, pero no tendrias intellisense

    recomendacion, si puedes usar el list sigue usandolo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 29 de mayo de 2017 11:03