web-dev-qa-db-fra.com

boucle via json array jquery

J'essaie de parcourir cela pour obtenir les valeurs de "nom". C'est ce que j'ai actuellement, mais cela ne semble pas fonctionner, j'ai essayé quelques autres de ce qui a été posté ici, mais rien ne semblait fonctionner.

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

Retour de Json:

   [
           {
              "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

Aucune suggestion?

Merci!

44
dzm

Vous devez analyser la chaîne en 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);
});
120
Rob W

vous pouvez également passer de la méthode .get() à la méthode .getJSON(), jQuery analysera ensuite la chaîne renvoyée comme data vers un objet javascript et/ou un tableau que vous pouvez puis référencez 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 en alert(item.name) vous obtiendrez les noms.

10
Kevin B

Je ne pense pas que vous retourniez un objet json du serveur. juste une chaîne.

vous avez besoin que le type de données de l'objet de retour soit json

1
Royi Namir