2010-11-22 30 views
1

Je suis très nouveau à jouer avec JSON. J'ai besoin d'itérer sur la réponse JSON venant d'AJAX, en fait, je suis en train de récupérer les valeurs checkboxe de la table db dans le formulaire sur 2,3,7,9,3. Maintenant, je suis coincé avec l'itération sur chaque numéro.jQuery.each - Comment parcourir des éléments JSON?

Si vous exécutez le code suivant dans la zone de la console FF, vous remarquerez qu'il est en boucle contre chaque valeur numérique NOT THE VALUE.

Veuillez me guider.

var srv = {"services":"26,29"}; 

jQuery.each(srv.services, function(i, v) { 
    console.log(v); 
}); 

Toute aide serait appréciée. THanks :)

Répondre

7

srv.services est une chaîne de valeurs séparées par des virgules, donc $.each() ne fonctionnera pas correctement. Vous pouvez split() dans un tableau, cependant:

var srv = {"services":"26,29"}; 

jQuery.each(srv.services.split(","), function(i, v) { 
    console.log(v); 
}); 

démonstration de travail: http://jsfiddle.net/AndyE/veP4p/

Vous pourriez aussi avoir votre service JSON retourner un tableau au lieu d'une chaîne, par exemple {"services":[26, 29]}. Cela sera fait automatiquement pour vous sur le serveur si vous utilisez des méthodes conformes à JSON pour encoder et si les données sont un tableau.

+1

+1 pour suggérer la modification du format des données au niveau du serveur. –

+0

Thnak vous beaucoup, Andy. tu m'as donné un bon concept sur JSON. –

0

Je ne sais pas c'est une réponse à votre problème, mais compte tenu de la déclaration d'en haut, essayez le fractionnement sur , avant itérer:

var srv = {"services":"26,29"}; 

jQuery.each(srv.services.split(','), function(i, v) { 
    console.log(v); 
}); 

(Demo)

+0

Bugger! :) (remplisseur) – jensgram

1

est pas valide tableau JSON, votre JSON les données doivent être quelque chose comme ceci:

var srv = {"services": ["26", "29"]}; 

..ou de causes, vous pouvez partager vos données de chaîne en utilisant fonction split js:

jQuery.each(srv.services.split(","), function(i, v) { 
    console.log(v); 
}); 
+0

c'était de ma faute. Merci pour la correction. –

0

Vous devez créer un tableau premier

var srv = {"services":"26,29".split(",")}; 

jQuery.each(srv.services, function(i, v) { 
    console.log(v); 
}); 
+0

Merci pour la réponse. :) –