none
¿Cómo recuperar datos de json en jQuery? RRS feed

  • Pregunta

  • Hola a todos, tengo el siguiente código:

    success: function (data) {
                $("#txtHC").val(data.email_est); //¿cómo recupero los datos?
            }

    en el evento success de .ajax, me devuelve lo siguiente:

    [{'email_est': 'abc@live.com', 'fon_est': '123456789'}]

    estos datos quiero mostrarlo en un textbox, espero puedan ayudarme.

    Saludos


    viernes, 10 de abril de 2015 19:18

Respuestas

  • tendrias que usar

    success: function (data) {
                $("#txtHC").val(data.email_est);
    }

    puedes que en algun caso tengas que usar

    success: function (data) {
                $("#txtHC").val(data.d.email_est);
    }

    para validarlo podrias usar el developer tool del browser, al cual accedes con F12, si usas Chrome podrias poner un breakpoint en el codigo javascript y evaluar lo qur recuperas de la invocacion ajax

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 10 de abril de 2015 20:04
  • Ya me salió, sólo tenia que hacer un parse de la siguiente forma:

    var objp = JSON.parse(data.d);
    
    $("#txtHC").val(objp[0]['email_est']);
    Saludos

    martes, 14 de abril de 2015 20:04

Todas las respuestas

  • tendrias que usar

    success: function (data) {
                $("#txtHC").val(data.email_est);
    }

    puedes que en algun caso tengas que usar

    success: function (data) {
                $("#txtHC").val(data.d.email_est);
    }

    para validarlo podrias usar el developer tool del browser, al cual accedes con F12, si usas Chrome podrias poner un breakpoint en el codigo javascript y evaluar lo qur recuperas de la invocacion ajax

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 10 de abril de 2015 20:04
  • Hola Leandro,

    haciendo breakpoint en el codigo javascript el evento success de .ajax me devuelve datos en formato siguiente:

    [{'email_est': 'abc@live.com', 'fon_est': '123456789'}]

    Es a partir de ahí que quiero recuperar los datos para mostrar en textbox, las siguientes pruebas me arrojan:

    success: function (data) {
            $("#txtHC").val(data.email_est); //No recupera
    	$("#txtHC").val(data.d.email_est); //No recupera
    	$("#txtHC").val(data[0]['email_est']); //No recupera
       }


    lunes, 13 de abril de 2015 20:30
  • hola

    como generas los datos desde el servidor para enviarlos como json al cliente?

    y si usas

    $("#txtHC").val(data.d[0].email_est);

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 13 de abril de 2015 21:09
  • Lo envío del servidor al cliente de la siguiente manera:

    [WebMethod] public static String cargarA(string id) { DataTable dt = new DataTable(); AMovimientoBE oMovBE = new AMovimientoBE(); AMovimientoSelBL oAMovSelBL = new AMovimientoSelBL(); oAMovBE.IndOpSp = 3; oAMovBE.IdA= id; dt = oAlumnoMovSelBL.fListarAMovimiento((BaseBE)oAMovBE); string[] jsonArray = new string[dt.Columns.Count]; string headString = string.Empty; for (int i = 0; i < dt.Columns.Count; i++) { jsonArray[i] = dt.Columns[i].Caption; headString += "'" + jsonArray[i] + "' : '" + jsonArray[i] + i.ToString() + "%" + "',"; } headString = headString.Substring(0, headString.Length - 1); StringBuilder sb = new StringBuilder(); sb.Append("["); if (dt.Rows.Count > 0) { for (int i = 0; i < dt.Rows.Count; i++) { string tempString = headString; sb.Append("{"); for (int j = 0; j < dt.Columns.Count; j++) { tempString = tempString.Replace(dt.Columns[j] + j.ToString() + "%", dt.Rows[i][j].ToString()); } sb.Append(tempString + "},"); } } else { string tempString = headString; sb.Append("{"); for (int j = 0; j < dt.Columns.Count; j++) { tempString = tempString.Replace(dt.Columns[j] + j.ToString() + "%", "-"); } sb.Append(tempString + "},"); } sb = new StringBuilder(sb.ToString().Substring(0, sb.ToString().Length - 1)); sb.Append("]"); return sb.ToString(); // json formatedo }

    usando:

    $("#txtHC").val(data.d[0].email_est);

    igual no me recupera.

    Saludos

    lunes, 13 de abril de 2015 21:28
  • ahh ok defines un string de retorno

    en ese caso deberias hacer

    var result = JSON.stringify(data);
    
    $("#txtHC").val(result.d.email_est);

    de esta forma conviertes el string a json

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    lunes, 13 de abril de 2015 21:30
  • Al convertir el string a json tengo la siguiente salida:

    var result = JSON.stringify(data);

    {"d":"[{'email_est': 'abc@live.com', 'fon_est': '123456789'}]"}

    y al recuperar:

    $("#txtHC").val(data.d.email_est); //ouput undefined
    $("#txtHC").val(result.email_est); //ouput undefined
    $("#txtHC").val(result['email_est']); //ouput undefined


    martes, 14 de abril de 2015 14:46
  • disculpa equivoque el ejemplo, ya lo edite

    $("#txtHC").val(result.d.email_est);

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 14 de abril de 2015 15:53
  • Tambien lo probé y sin resultado:

    $("#txtHC").val(result.d.email_est); // no muestra nada probablemente por error en el sintaxis

    Saludos

    martes, 14 de abril de 2015 16:03
  • si pones un breakpoint en el codigo javascript usando las developer tools del browser como observas los datos cuando evaluas la variable que asignas el  JSON.stringify();

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 14 de abril de 2015 16:31
  • al hacer seguimiento al javascript la variable result contiene:

    {"d":"[{"email_est": "abc@live.com", "fon_est": "123456789"}]"}

    y

    alert(result.d.email_est);

    me marca un error:

    "Uncaught TypeError: Cannot read property 'email_est' of undefined"

    Este es mi javascript completo:

    function actualizarA(idA) {
        $.ajax({
            type: "POST",
            url: "Evaluacion.aspx/cargarA",
            data: "{idA: '" + idA + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data) {
                var result = JSON.stringify(data);
                alert(result.d.email_est);
                $("#txtHC").val(result.email_est);
            }
        });
    Saludos


    martes, 14 de abril de 2015 17:43
  • y si usas

    alert(result.d[0].email_est);

    porque por lo que veo es un array lo que retornas


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 14 de abril de 2015 17:45
  • Ya me salió, sólo tenia que hacer un parse de la siguiente forma:

    var objp = JSON.parse(data.d);
    
    $("#txtHC").val(objp[0]['email_est']);
    Saludos

    martes, 14 de abril de 2015 20:04
  • sabes que me equivoque, no era el stringify() era el parse()

    pero ojo porque pones data.d ? eso no esta bien porque en ese caso ya tienes un json

    var objp = JSON.parse(data);
    
    $("#txtHC").val(objp.d[0]['email_est']);


    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 14 de abril de 2015 20:28