J'ai un problème avec JQuery / Ajax / Json. J'utilise une poche JQuery Ajax comme ...
$("<div id=\"" + student.id + "\">" + student.full_name + " (" + student.user_id + " - " + student.stin + ")</div>")
4 Réponses :
Le JSON que vous avez actuellement ne fonctionnera pas car le deuxième "étudiant" remplace efficacement le premier, car ce sont simplement des propriétés dans un objet.
Si vous pouvez contrôler la sortie JSON, changez-le à: p> alors vous avez une matrice que vous pouvez boucler: p>
Votre objet JSON est incorrect car il a plusieurs propriétés avec le même nom. Vous devriez retourner une gamme d'objets "étudiant". Ensuite, vous pouvez en savoir plus comme suit: P> for (var i = 0, len = objJSON.length; i < len; ++i) {
var student = objJSON[i];
$("<div id=\"" + student.id + "\">" + student.full_name + " (" + student.user_id + " - " + student.stin + ")</div>")...
}
Merci pour la réponse, ça marche! Cependant, juste une question ... Comment se fait-il que je ne puisse pas simplement faire un pour (étudiant à objjson) {}? Je l'ai essayé et ça ne fonctionnait pas ... bien peu importe, ça marche. Merci encore.
J'aurais pensé que cela fonctionnerait, mais je préfère itération des tableaux en utilisant l'index.
Stackoverflow.com/Questtions/2498107/... ...
Une question ici. Je crois que chaque objet à l'intérieur de la liste JSON est un dictionnaire. Si nous faisons un quelque_dictionary.attribute code> dans Python normal, nous obtenons un
attributeError code>. Comment alors est-il valide ici? Est-ce un type différent de dictionnaire ou ne se comporte pas comme un dictionnaire du tout?
@SidharthSamant C'est JavaScript. En JavaScript, vous pouvez vous reporter aux propriétés d'un objet soit à l'aide de obj ['Property'] code> ou
obj.property code> tant que le nom de la propriété est valide en ce qui concerne Directives de dénomination JavaScript. S'il contient des caractères illégaux pour un nom JavaScript, alors vous êtes limité à la première option.
@tvanfosson Oh à droite. Oublié. Désolé. Était frustré par des heures de googling pour mon problème de python et quand je suis tombé ici, je n'ai même pas vu si cette question était étiquetée avec Python. Ma faute.
Il y a un problème avec ce JSON - les bretelles frisées extérieures doivent être des crochets carrés, comme vous le souhaitez une liste, pas une carte (objet AKA). Avec tous les objets de la carte ayant la même clé, il n'appréciera pas correctement - la dernière valeur écrasera la précédente sous la plupart des analyseurs.
Vous voulez: P>
$.getJSON("someurl.com", function(students) { $.each(students, function() { $("<div id=\"" + student.id + "\">" + student.full_name + " (" + student.user_id + " - " + student.stin + ")</div>").appendTo($container); }); });
Il y a une erreur dans votre première suggestion: vous avez toujours des noms de propriété ("étudiant") pour les entrées de votre tableau. Supprimera la bowvote lorsqu'il sera corrigé.
var data = '[ { "id": 456, "full_name": "GOOBER, ANGELA", "user_id": "2733245678", "stin": "2733212346" }, { "id": 123, "full_name": "BOB, STEVE", "user_id": "abc213", "stin": "9040923411" } ]'; $.each(data, function(index, val) { alert(val.id); alert(val.full_name); alert(val.user_id); alert(val.stin); })
JSON peut-il avoir la même clé (ici "étudiant"), un objet plusieurs fois? Sinon, ce que vous obtenez n'est pas JSON.
Ah oui,
Angela Goober Code> ... Comment va la petite Angie de ces jours-ci? A-t-elle et
Bobby Doofus Code> se marie déjà?