La liste déroulante que j'ai sur la page est remplie à partir d'un appel AJAX via ce qui suit. Ce qui ne fonctionne pas, c'est que je dois exécuter du code supplémentaire juste après l'invocation de la méthode callback()
, mais cela ne se poursuit jamais dans le reste du rappel. Par exemple, ce qui suit dans le rappel de succès ne fonctionne pas le code supplémentaire identifié:Selectize Ajax Callbacks
var $ddl = $("#ContactID");
var control = $ddl[0].selectize;
control.load(function() {
$.ajax({
url: "validURL",
type: "post",
dataType: "json",
data: {
id: recordID
},
error: function() {
alert("Error retrieving data");
callback();
},
success: function (result) {
callback(result.data);
//Does not get called below
loadAdditionalInformation(recordID);
}
});
});
Cependant, si je le fais, cela fonctionne:
success: function (result) {
window.setTimeout(function() {
callback(result.data);
}, 0);
loadAdditionalInformation(recordID);
}
Je dois appeler une méthode à la pointez la liste est chargée, donc je ne suis pas sûr que je veux continuer avec cela, alors pourquoi le callback de succès abandonner après l'appel de méthode callback()
.
cela n'a pas de sens. timeout 0 fait la fonction interne asynchrone donc seule explication est erreur/boucle infinie pendant la fonction de rappel .. C'est une question stupide, mais avez-vous vérifié la console? – bigless
@bigless C'est une très bonne question et Zamrony avait raison, j'ai oublié un paramètre, donc j'avais affaire à un indéfini, mais il a été avalé pour une raison quelconque, je ne sais pas pourquoi. Encore une fois, je ne proposais pas 'setTimeout' comme réponse, mais quelque chose que j'ai remarqué et essayé ... –