en boucle dans un tableau JSON

J’ai récemment posté une autre question qui a immédiatement amené les utilisateurs à me diriger dans la bonne direction.

$.ajax({ type: 'POST', url: './', data: 'token=' + token + '&re=8', cache: false, timeout: 5000, success: function(html){ auth(html); var JSON_array = eval(html); alert(JSON_array[0].username); } }); 

cela retourne les données correctement mais je veux effectuer une sorte de ‘foreach’. le tableau contient des données sur plusieurs messages instantanés entrants et sortants. Donc, si un utilisateur parle à plus d’une personne à la fois, j’ai besoin de passer en boucle. la structure du tableau est la suivante.

  Array ( [0] => Array ( [username] => Emmalene [contents] => 
  • ACTwebDesigns
  • helllllllo
  • ACTwebDesigns
  • sds
  • ACTwebDesigns
  • Sponge
  • dick
  • ACTwebDesigns
  • arghh
) )

Toute aide est très appreciée.

Puisque vous utilisez déjà jQuery, vous pouvez utiliser chaque fonction:

 $.ajax({ type: 'POST', url: './', data: 'token=' + token + '&re=8', cache: false, timeout: 5000, success: function(html){ auth(html); var JSON_array = eval(html); $.each(JSON_array, function(index, data) { $('someelement').append(data.contents); }); } }); 

Au lieu d’évaluer le code HTML, vous pouvez même spécifier JSON comme type de retour …

L’itération est facile avec $.each :

 $.ajax({ type: "POST", data: ..., url: url, dataType: "json", success: function(data) { $.each(data, function(i, item){ // do something with every item in data // you can reference items in data via // data.fieldName }); } }); 

Mais une boucle for ... in boucle n’est pas beaucoup plus difficile:

 $.ajax({ ..., dataType: "json", success: function(data) { var fields = data.fieldName; var value; for (value in fields) { // do something with value } } }); 

Juste pour clarifier, comme j’ai lu de nombreux conseils et réponses utiles et que celui-ci a fonctionné pour moi:

 $.ajax({ type: 'POST', url: './', data: 'token=' + token + '&re=8', cache: false, timeout: 5000, datatype: 'json', success: function(html){ auth(html); var JSON_array = eval(html); $.each(JSON_array, function(index, data) { var talk_to = JSON_array.username; var contents_to_update = JSON_array.contents; }); } }); 

ce qui a fait le travail:

1) utilisation de eval. 2) type de données: ‘json’ 3) utilisation de la fonction $ .each de jquery