2011-07-23 2 views
0

Conformément à mon précédent post, j'essaie de récupérer des informations à partir d'une interface RESTful utilisant JSON. Je travaille sur JQuery 1.5.Valeurs non définies renvoyées par JSON

Le problème que je rencontre est que je reviens à la suite valeurs non définies. Je ne suis pas capable d'utiliser firebug car mon application est développée en utilisant PhoneGap et l'application fonctionne sur le simulateur de l'iPhone.

Si je visite l'interface RESTful (je tape l'URL « de example.json » dans un navigateur - où est par exemple une URL valide créée par un autre développeur) me renvoie les résultats au format suivant:

[{"person":{"created_at":"2011-07-18T17:51:33Z","id":1,"name":"John","age":60,"surname":"Smith","car_id":1,"updated_at":"2011-07-18T17:51:33Z"}},{"person":{"created_at":"2011-07-18T17:51:35Z","id":1,"name":"Johnny","age":50,"surname":"Deep","car_id":2,"updated_at":"2011-07-18T17:51:35Z"}}] 

J'ai besoin d'obtenir l'identifiant de l'information, le nom, l'âge et les stocker dans un tableau (pas une table html). Juste pour voir si la connexion retourne toutes les valeurs que j'utilise le code:

var jqxhr = $.getJSON("example.json", function(person) { 
     $.each(person, function(i, person) { 
      alert(person.name); 
      alert(person.age); 
     }); 
    }) 
    .success(function() { alert("second success"); }) 
    .error(function() { alert("Cannot connect to the SWT's maps. Please try again later!"); }) 
    .complete(function() { alert("complete"); }); 

Alors, pourquoi dois-je obtenir par la non définie en tant que valeurs d'alerte?

+0

Êtes-vous l'édition de votre question? – ChristopheCVB

+0

@Christophe oui, j'ai eu des erreurs de frappe, maintenant c'est exactement à quoi ressemble mon code. – tasanoui

+0

Donc Fabrizio a raison – ChristopheCVB

Répondre

2

Ce code devrait fonctionner:

var jqxhr = $.getJSON("example.json", function(person) { 
     $.each(person, function(i, item) { 
      alert(item.person.name); 
      alert(item.person.age); 
     }); 
    }) 
    .success(function() { alert("second success"); }) 
    .error(function() { alert("Cannot connect to the SWT's maps. Please try again later!"); }) 
    .complete(function() { alert("complete"); }); 
+0

@ Fabrizio merci beaucoup beaucoup! En effet, cela fonctionne maintenant! J'ai besoin d'encore une chose cependant si vous pouvez m'aider avec ceci aussi, comment je peux stocker les valeurs maintenant (je ne saurai pas le nombre de valeurs retournées) dans un tableau? – tasanoui

+0

Ma suggestion est de déclarer un tableau et de le peupler dans la boucle $ .each. Vous n'avez pas besoin de connaître le nombre d'enregistrements "personnels" renvoyés. –

+0

@ Fabrizio merci encore pour votre aide. Je vous en suis reconnaissant. – tasanoui

-1

Êtes-vous sûr de votre code? essayez:

var jqxhr = $.getJSON("example.json", function(data) { 
$.each(data, function(i, item) { 
     alert(item.name); 
     alert(item.age); 
    }); 
} 

Hope this helps

+1

Ce n'est pas tout à fait exact non plus. Je pense que cela devrait être item ['personne'] nom – CiscoIPPhone

+0

Désolé, c'était une erreur de type, j'ai corrigé le code maintenant, j'ai une personne, pas de données. J'ai aussi essayé le code par @wezzy mais ne fonctionnait toujours pas ... vVeuillez m'aider, il est urgent de le finir. – tasanoui

+0

@CiscolPPhone je n'ai pas essayé mais où est l'erreur? il ressemble à la vôtre dans la réponse ci-dessous – wezzy

Questions connexes