L'obtention de Données Après jQuery getJSON
J'essaye de prendre des photos à travers le facebook Graph API. Voici mon code:
function getImgURL(photos, m) {
n=0;
while (typeof photos[n] !== 'undefined') {
photourl[m] = photos[n].images[2].source;
n++;
m++;
}
}
$('document').ready(function() {
var url = "https://graph.facebook.com/179877662120200";
var json = $.ajax(url);
console.log(json);
console.log(json.responseText);
var photos = $.parseJSON(json);
console.log(photos);
console.log(photos);
var m = 0;
getImgURL(photos, m);
while (typeof photos.paging !== 'undefined') {
json = $.ajax(photos.paging.next);
photos = $.parseJSON(json);
getImgURL (photos, m);
}
});
Donc en regardant le journal, il retourne la variable json comme un objet. Une propriété de l'objet est "responseText" mais lorsque je lance l'impression que la console il retourne "undefined"
Vous devez vous connecter pour publier un commentaire.
AJAX/JSON-P les demandes sont (souvent, toujours dans le cas de JSON-P) opérations asynchrones - vous besoin de recevoir et de traiter la réponse dans un rappel, pas tout de suite après la demande.
L'objet que vous pensez que vous êtes l'obtention est en fait un différé objet généré par jQuery, pas la réponse.
Donc:
Ou, si vous préférez déclarer la fonction de rappel plus tard, pour une raison quelconque:
Quelques autres points:
1) jQuery analyse automatiquement des chaînes JSON renvoyé dans le cadre de JSON-P demande, de sorte que vous n'avez pas besoin d'analyser vous-même que vous êtes actuellement
2) votre
n
var est (apparemment) global3) vous pouvez améliorer votre indentation que le code n'est pas super lisible
4) votre boucle peut être simplifié à
while(photos[n]) {...