2011-10-14 2 views
39

J'essaye de parcourir cette boucle pour obtenir les valeurs 'name'. C'est ce que j'ai actuellement, mais ça ne semble pas fonctionner, j'ai essayé quelques autres de ce qui était posté ici mais rien ne semblait fonctionner.loop through json array jquery

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

JSON retour:

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

J'ai essayé d'utiliser:

item.name 
item[i].name 

Toutes les suggestions?

Merci!

+0

essayer 'item [i] [0]' – jackJoe

+0

renvoie un seul support, « [ » – dzm

+0

cela signifie qu'il est de ne pas traiter comme un tableau ... – jackJoe

Répondre

111

Vous avez à analyser la chaîne JSON (data[0] == "[" est une indication que data est en fait une chaîne, pas un objet):

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

qui est que je l'ai écrit ci-dessous :) –

+0

Mais ne pas rendre le script async ?? – ruveena

1

Je ne pense pas que vous êtes retour objet JSON du serveur. juste une chaîne.

vous avez besoin dataType de l'objet de retour à être JSON

9

vous pouvez également passer de la méthode .get() la méthode .getJSON(), jQuery alors analyser la chaîne renvoyée comme data à un objet javascript et/ou tableau qui vous pouvez ensuite référencer comme tout autre objet/tableau javascript. En utilisant votre code ci-dessus, si vous avez changé .get en .getJSON, vous devriez recevoir une alerte de [object Object] pour chaque élément du tableau. Si vous avez changé l'alerte à alert(item.name), vous obtiendrez les noms.