2011-10-14 17 views
39

Estoy tratando de recorrer este para obtener los valores de 'nombre'. Esto es lo que tengo actualmente, pero parece que no funciona, intenté algunos otros de lo que se publicó aquí pero nada parecía funcionar.loop through json array jquery

$.get("/get_names", {campaign_id: $('select[name="id"]').val()}, 
       function(data){ 
        $.each(data, function(i, item) { 
         alert(item); 
        }); 
       } 
    ); 

JSON siendo devuelto:

[ 
      { 
       "name":"age" 
      }, 
      { 
       "name":"asdf" 
      }, 
      { 
       "name":"drivername" 
      }, 
      { 
       "name":"drivers" 
      }, 
      { 
       "name":"firstname" 
      }, 
      { 
       "name":"gender" 
      }, 
      { 
       "name":"lastname" 
      }, 
      { 
       "name":"make" 
      }, 
      { 
       "name":"model" 
      }, 
      { 
       "name":"vehicles" 
      }, 
      { 
       "name":"year" 
      } 
     ] 

He intentado usar:

item.name 
item[i].name 

¿Alguna sugerencia?

¡Gracias!

+0

Utilice el elemento de '[i] [0]' – jackJoe

+0

devuelve un único soporte, '[' – dzm

+0

que significa que no es tratarla como una matriz ... – jackJoe

Respuesta

111

Tienes que analizar la cadena como JSON (data[0] == "[" es una indicación de que data es en realidad una cadena, no un objeto):

data = $.parseJSON(data); 
$.each(data, function(i, item) { 
    alert(item); 
}); 
+2

eso es que escribí a continuación :) –

+0

pero no esta hacer el script asincrónico? – ruveena

1

No pienso estás volviendo objeto JSON desde el servidor. solo una cuerda.

que necesita el tipo de datos del objeto de retorno para ser JSON

9

también se puede cambiar desde el método .get() al método .getJSON(), jQuery y luego analizar la cadena devuelta como data a un objeto y/o la matriz de JavaScript que a continuación, puede hacer referencia como cualquier otro objeto/matriz javascript.

usando su código anterior, si cambió .get a .getJSON, debe recibir una alerta de [object Object] para cada elemento de la matriz. Si cambió la alerta a alert(item.name), obtendrá los nombres.