Estoy trabajando con el código de llamada detrás de las funciones de la llamada ajax. Acabo de crear un método Post, devuelve una lista. Solo quiero verificar los valores desde el lado del cliente. Así que simplemente envía un mensaje de alerta y pasa response.d como un parámetro. Pero devuelve objeto, Objeto en lugar de valores reales. ¿Quiero saber la forma exacta de obtener los valores?

 [WebMethod]
        public static List<person> Post()
        {
            List<person> List = new List<person>();
            person p1 = new person();
            p1.name = "Sourav";
            p1.surname = "Kayal";
            List.Add(p1);
            person p2 = new person();
            p2.name = "Sourav";
            p2.surname = "Kayal";
            List.Add(p2);
            return List;
        }  
    }
    public class person
    {
        public string name { get; set; }
        public string surname { get; set; }
    }


<script>

     $(document).ready(function () {

         $.ajax({
             type: "POST",
             url: "JavaScript.aspx/Post",
             contentType: "application/json; charset=utf-8",
             dataType: "json",
             success: function (response) {
                 var names = response.d;
                 alert(names);
             },
             failure: function (response) {
                 alert(response.d);
             }
         });
     });
 </script>
0
Sivakumar Piratheeban 3 sep. 2014 a las 08:17

3 respuestas

La mejor respuesta

Para que su jQuery funcione, también deberá serializar su List<person> en código C #:

En lugar de

return List; agregue el siguiente código:

//Add the below using line on the top of the page where all using directives are present
using System.Web.Script.Serialization;


var jsonSerialiser = new JavaScriptSerializer();
var json = jsonSerialiser.Serialize(List);
return json;

Como está utilizando jQuery, podemos usar el siguiente código para analizar el objeto JSON:

$(document).ready(function () {
     $.ajax({
         type: "POST",
         url: "JavaScript.aspx/Post",
         contentType: "application/json; charset=utf-8",
         dataType: "text",
         success: function (response) {
             var obj = jQuery.parseJSON(response);
            alert(obj.name);
            alert(obj.surname);
         },
         failure: function (response) {
             alert(response.d);
         }
     });
 });

Con este cambio de código anterior en su función de éxito, debería obtener los valores del objeto JSON.

EDITAR basado en el comentario: la línea a continuación -

var json = jsonSerialiser.Serialize(List);

Produces string value of:    
[ 
  {"name":"Sourav","surname":"Kayal"},
  {"name":"Sourav","surname":"Kayal"}, 
]

Ejemplo de referencia para obtener detalles: HAGA CLIC AQUÍ

1
Murtaza 3 sep. 2014 a las 11:06

En la función de éxito, intente el registro de la consola (o la depuración de JavaScript F12) para ver el objeto de respuesta y sus miembros. [Objeto, objeto] debería ser un error de JavaScript al intentar traducir un objeto (código) como una cadena. Probablemente encontrará "valores exactos" en bucle de esta manera:

  var surnames = [], prop, i;
  for (item in response) {
    if (item.hasOwnProperty('surname')) {
      surnames.push(item.surname);
    }
  }
  // Or
  for(var i = 0; i < response.length; i++) {
    if(typeof response[i]['surname'] === 'string') {
      surnames[i] = response[i]['surname'];
    }
  }
0
s6712 3 sep. 2014 a las 04:36

Tratar

var names = JSON.parse(response);
                 alert(names.d);
               alert(names.name);
               alert(names.surname);
1
Suchit kumar 3 sep. 2014 a las 04:57