La transmission des données à l'extérieur appel ajax, jQuery
Je suis vimeo des vignettes à partir de l'API, et je suis en utilisant une fonction jQuery pour ajouter les données dans les dom.
J'essaye d'accéder à thumb_url à l'extérieur de l'ajax, donc je peux retourner à jQuery, mais ça ne fonctionne pas.
function getThumb(vimeoVideoID) {
var thumb_url;
$.ajax({
type: 'GET',
url: 'http://vimeo.com/api/v2/video/' + vimeoVideoID + '.json',
jsonp: 'callback',
dataType: 'jsonp',
success: function (data) {
console.log(data[0].thumbnail_large);
thumb_url = data[0].thumbnail_large;
}
});
return thumb_url;
}
$('.video').each(function () {
var thumb_url = getThumb(this.id);
$(this).append('<img src="' + thumb_url + '" class="video_preview"/>');
});
Violon: http://jsfiddle.net/gyQS4/2/
de l'aide?
double possible de Comment faire pour retourner AJAX Texte de la réponse?
OriginalL'auteur black_rabbit | 2014-01-10
Vous devez vous connecter pour publier un commentaire.
Parce que les appels AJAX sont asynchrone, vous ne pouvez pas revenir et l'accès thumb_url la façon dont vous essayez de.
En d'autres termes, en raison de votre appel AJAX pouvez obtenir données à tout moment (cela peut prendre de 1 seconde, il peut prendre 10 secondes), le reste du code (y compris les retour résultats) exécutera de manière synchrone, c'est à dire avant que le serveur a même une chance de répondre avec données.
Une commune conception de la solution utilisée dans ces situations, c'est d'exécuter tout ce que vous voulez exécuter à l'intérieur d'un fonction de rappel.
Que vous pourriez faire quelque chose de similaire à ceci:
Il enregistre actuellement de l'image, mais quand je passe en revue les dom, je reçois toujours img src="undefined" . Ressemble encore à du var thumb_url n'a pas été restituée à la fin jsfiddle.net/gyQS4/3
Vous ne pouvez pas utiliser une instruction de retour ici. Vous devez tout faire à l'intérieur de la fonction de rappel. Voir cette jsfiddle
OriginalL'auteur Josh Beam