155 votes

boucle de jQuery sur données Json à l’aide de .chaque $

Salut j'ai le texte suivant JSON retourné dans une variable appelée de données.

C'EST LE JSON QUI REVIENT...

[ 
{"Id": 10004, "PageName": "club"}, 
{"Id": 10040, "PageName": "qaz"}, 
{"Id": 10059, "PageName": "jjjjjjj"}
]

et je suis en train de boucler la collection à l'aide de $.chaque mais je suis en cours d'exécution dans les problèmes où l'alerte est montrant pas défini. J'ai essayé beaucoup de différentes syntaxe mais ne semblent pas le comprendre.

Le JQuery que j'utilise est

$.each(data, function(i, item) {
    alert(item.PageName);
});

Quelqu'un peut-il me diriger dans la bonne direction?

MODIFIER C'est le code que j'utilise la saisie des données

$.getJSON('/Cms/GetPages/123', null, function(data) {
  fillSelect(data);
});

et c'est la fonction qui est appelée lors de l'appel de retour

function fillSelect(data) {
  alert(data);
  $.each(data, function(i, item) {
    alert(item.PageName);
  });
}

EDIT 2 C'est un peu déroutant moi, selon la documentation, il doit travailler comme je l'ai, mais il ne le fait pas. Selon fiddler l'en-tête montre:-

Content-Type: application/json; charset=utf-8

et le JSON est tout à fait correct au-dessus. Je suis en utilisant google chrome si c'est tout différent. Permettra de tester sous IE et FF....

EDIT 3

à l'aide de $.obtenir produit

"[\r\n {\r\n \"Id\": 10041,\r\n \"PageName\": \"01234567890\",\r\n \"MetaId\": 1000,\r\n \"TemplateId\": 2\r\n },\r\n {\r\n \"Id\": 10001,\r\n \"PageName\": \"about\",\r\n \"MetaId\": 1000,\r\n \"TemplateId\": 1\r\n },\r\n {\r\n \"Id\": 10056,\r\n \"PageName\": \"fdgdfgdfg\",\r\n \"MetaId\": 1000,\r\n \"TemplateId\": 1\r\n },\r\n {\r\n \"Id\": 10052,\r\n \"PageName\": \"hjkhjk\",\r\n \"MetaId\": 1000,\r\n \"TemplateId\": 2\r\n },\r\n {\r\n \"Id\": 10059,\r\n \"PageName\": \"jjjjjjj\",\r\n \"MetaId\": 1000,\r\n \"TemplateId\": 1\r\n },\r\n {\r\n \"Id\": 10057,\r\n \"PageName\": \"qqqqq\",\r\n \"MetaId\": 1000,\r\n \"TemplateId\": 2\r\n },\r\n {\r\n \"Id\": 10054,\r\n \"PageName\": \"qwqw\",\r\n \"MetaId\": 1000,\r\n \"TemplateId\": 2\r\n }\r\n]"

290voto

andres descalzo Points 8392
<pre><code></code><p>ces deux options fonctionnent bien, sauf si vous avez quelque chose comme :</p><pre><code></code></pre><p><strong>EDIT :</strong></p><p>Essayez avec ceci et décrit ce que le résultat</p><pre><code></code></pre><p><strong>POUR EDIT 3 :</strong></p><p>Cela corrige le problème, mais pas l’idée d’utiliser « eval », vous devriez voir comment sont la réponse à « / Cms/GetPages/123'.</p><pre><code></code></pre></pre>

16voto

vava Points 11364

Avez-vous converti vos données de la chaîne pour objet JavaScript?

Vous pouvez le faire avec l' data = eval('(' + string_data + ')'); , ou, ce qui est plus sûr, data = JSON.parse(string_data); mais plus tard, de ne travaille dans FF 3.5 ou si vous incluez json2.js

jQuery depuis 1.4.1 également avoir la fonction pour qui, $.parseJSON().

Mais en réalité, $.getJSON() devrait vous donner déjà analysé objet json, vous devriez donc vérifier tout à fond, il y a peu d'erreur, enfouie quelque part, comme vous l'avez peut-être oublié de citer quelque chose en json, ou l'un des supports est manquant.

4voto

kgiannakakis Points 62727

getJSON permettra d’évaluer les données en JSON pour vous, aussi longtemps que le type de contenu correct est utilisé. Assurez-vous que le serveur retourne les données sous forme d’application/json.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X