Comment boucler ma réponse Json avec jQuery?

Ma réponse Json ressemble à:

[{"UserID": 1}, {"UserID", 324}] 

J’appelle la page pour obtenir JSON comme:

 $.get("myurl.aspx", {blah:1}, function(data) { $.each(data.items, function(i, item) { alert(item.UserID); }); }); 

Firebug rapporte l’erreur:

G est indéfini.

Je pense que vous voulez plutôt cela car votre var de données n’a pas une propriété appelée items:

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

Il semble que votre réponse ne soit pas un véritable object JSON. Notez qu’il y a une virgule au lieu d’un deux-points dans votre réponse.

S’il ne s’agit que d’une faute de frappe, vérifiez la demande et la réponse dans la console Firebug (onglet Réseau) pour voir quelles données sont envoyées à la page myurl.aspx . Vous devriez voir votre demande AJAX, ainsi que les données renvoyées sur votre page.

N’oubliez pas de passer un paramètre de type de données pour qu’il sache qu’il attend JSON, ou utilisez getJSON place.

Le JSON que vous avez publié est invalide:

 [{"UserID": 1}, {"UserID", 324}] 

Notez la virgule sur le deuxième ID utilisateur.

Par défaut, ASP.Net encapsule l’object JSON dans un autre object nommé “d”. Votre réponse ressemblerait à ceci alors:

 {"d": [{"UserID": 1}, {"UserID": 324}]} 

Essaye ça:

 $.get("myurl.aspx", {blah:1}, function(data) { $.each(data.d, function(i, item) { alert(item.UserID); }); }); 

Consultez ce lien pour connaître le raisonnement de Microsoft (au bas de la page.)