Comment attribuez-vous les données récupérées via getJSON()
à un tableau, pour une utilisation ultérieure?données Assigner de jQuery getJSON à tableau
L'URL getJSON ci-dessous récupère correctement formaté JSON avec 10 éléments principaux, chacun ayant des sous-éléments d'identification, le nom d'utilisateur, haiku (et d'autres). Si vous l'exécutez, essayez d'enregistrer les éléments JSON dans un fichier local, afin que vous n'obtiendrez pas la même erreur de domaine (c'est-à-dire que JSON ne se chargera pas si vous récupérez un autre domaine).
Ce qui se passe, c'est que l'alerte va chercher une valeur dans le rappel getJSON
, mais à l'extérieur, la valeur est indéfinie.
$(document).ready(function(){
var haikus=[];
alert("begin loop");
$.getJSON('http://example.com/json.php',function(data){
var i=0;
for(i=0;i<data.length;i++){
haikus[i]=[data[i].id,String(data[i].username),String(data[i].haiku)];
}
alert(haikus[0][1]);
});
})
- Oui, cela est lié à un post précédent. Mais, au départ, j'avais trop simplifié mon problème, donc les solutions initiales fournies ne l'ont pas résolu. jQuery - getJSON data to array
oui, mais que faire si vous remplissez un tableau global dans le rappel - pouvez-vous référencer le tableau plus tard? – ina
@ina - oui, bien sûr. Voir cet exemple: http://jsfiddle.net/FgV8W/ Si vous cliquez sur la valeur pendant que le JSON est en cours de chargement, vous n'obtiendrez rien, si vous cliquez dessus après que cela soit fait, il vous donnera vos données. – Ryley
@ina - Peu importe si elle est globale ou non. Si vous essayez de l'utiliser * avant * il a des données, alors ce sera 'undefined'. Si vous essayez immédiatement d'utiliser la variable 'haikus' * en dehors du rappel' $ .getJSON', cela ne fonctionnera pas. Le code qui utilise 'haikus' * n'attendra pas * pour que la réponse soit retournée. Il va essayer d'utiliser 'haikus' * immédiatement *.Parce qu'il n'attend pas la réponse, alors 'haikus' n'aura pas encore reçu le' data' de la réponse. – user113716