2011-06-26 7 views
3

Je reçois le texte suivant retour d'une $.ajax({ POST.....jQuery Accéder à un objet JSON?

[{"total_votes":1,"options":[{"id":40,"vote_count":0,"users":[]},{"id":41,"vote_count":1,"users":[{"photo":"xxxxxxxxxxx.png","name":"XXXXX,"id":1}]},{"id":42,"vote_count":0,"users":[]}]}] 

donc j'essayer d'obtenir total_votes avec:

success: function(e) { 
     console.log(e['total_votes'])  
    } 

également essayer d'obtenir

 console.log(e['options'].length()) 
     console.log(e['options'][0]['id']) 

Suggestions pourquoi je continue à obtenir undefined ? Y a-t-il aussi un meilleur moyen de faire défiler les options?

Merci

+0

Vous exclu quelques détails importants de votre ' $ .ajax() 'méthode. Avez-vous défini la propriété 'dataType:' sur ''json''? Si non, est-il envoyé du serveur avec les en-têtes appropriés? – user113716

+0

@AnApprentce, je pense que votre JSON n'est pas correctement formaté. vous devrez peut-être vérifier le type retourné en utilisant des firbugs dans firefox. – tkt986

Répondre

8

Votre objet racine est un tableau, vous devez faire quelque chose comme e[0]['total_votes']. Aussi la longueur d'un tableau n'est pas une fonction c'est une propriété donc vous voulez faire e[0].options.length ou e[0]['options'].length.

+0

Encore undefined – AnApprentice

+1

@AnApprentice: Fonctionne si votre JSON est analysé: http://jsfiddle.net/fkling/aJNCm/. Analysez-le ou définissez 'dataType: 'json''. –

+0

Les données sont-elles analysées en tant que json ou chaîne? Que se passe-t-il si vous définissez dataType: "json" dans la section des options? (Voir http://api.jquery.com/jQuery.ajax/) –

0

Vous devez appeler JSON.parse avant déréférencement l'objet JSON

1

Il serait e[0].total_votes selon votre exemple de réponse JSON (il est dans un tableau).

+0

Encore undefined – AnApprentice

+0

@AnApprentice: Avez-vous veillé à définir 'dataType' comme' "json" '? – Ryan

0

Formaté ur Json cette façon, vous pouvez obtenir la valeur de "total_votes" comme celui-ci

success: function(e) { 
    console.log(e[0].total_votes); 

} 

[ 
    { 
     "total_votes": 1, 
     "options": [ 
      { 
       "id": 40, 
       "vote_count": 0, 
       "users": [] 
      }, 
      { 
       "id": 41, 
       "vote_count": 1, 
       "users": [ 
        { 
         "photo": "xxxxxxxxxxx.png", 
         "name": "XXXXX", 
         "id": 1 
        } 
       ] 
      }, 
      { 
       "id": 42, 
       "vote_count": 0, 
       "users": [ 
        {} 
       ] 
      } 
     ] 
    } 
] 

départ here