Affectation d'une variable de l'ajax de jquery appel renvoie undefined
Je suis nouveau sur jquery et je suis en train d'affecter une valeur à une variable après un appel ajax, mais il renvoie undefined. Mon code est ci-dessous:
function prepareDocument() {
var a = getAverageRating(1);
alert(a);
}
function getAverageRating(pageId) {
$.ajax({
url: "../services/rating.ashx?action=getAverageRating&pageId=" + pageId,
dataType: "text",
type: "GET",
data: {},
error: function (err) {
displayDialogBox("Error", err.toString());
},
success: function (data) {
return data;
}
});
}
Toute aide serait appréciée.
Merci,
Il semble que ce soit le même scénario que discuté ici stackoverflow.com/questions/14220321/...
OriginalL'auteur sidy3d | 2013-06-10
Vous devez vous connecter pour publier un commentaire.
C'est un problème très commun pour les gens non habitués à l'aide d'opérations asynchrones. Il vous oblige à repenser la façon dont vous structurez votre code, car vous ne pouvez tout simplement pas le programme dans la série normale de style.
Vous ne pouvez pas retourner une valeur à partir du gestionnaire de succès d'un appel ajax asynchrone. L'ajax llc a depuis longtemps terminé et déjà retourné. Retour d'une valeur à partir du gestionnaire de succès va juste dans les entrailles de l'ajax code, pas de retour dans votre code.
Au lieu de cela, vous devez utiliser les résultats de l'appel ajax dans le gestionnaire de succès ou dans une fonction d'appel, le gestionnaire de succès.
Dans votre cas particulier, votre
getAverageRating()
fonction probablement besoin de prendre une fonction de rappel et lorsque le classement a été récupérée, la fonction de rappel est appelée. Il ne peut pas retourner de la valeur, car il revient tout de suite et puis peu de temps à l'avenir, l'appel ajax est terminée et que le gestionnaire de succès dans l'ajax de la fonction est appelée avec les données réelles.OriginalL'auteur jfriend00