En utilisant un formulaire dans une boîte de dialogue, j'utilise Dojo dans jsp pour enregistrer le formulaire dans ma base de données. Une fois cette requête complétée en utilisant dojo.xhrPost(), j'envoie une autre requête pour mettre à jour une liste déroulante qui devrait inclure l'objet formulaire ajouté qui vient d'être sauvegardé, mais pour une raison quelconque, la demande de mise à jour est exécutée avant d'enregistrer le formulaire dans la base de données même si le formulaire save est appelé en premier. En utilisant Firebug, je peux voir que la requête getLocations() est terminée avant la requête sendForm(). Ceci est le code:Dans quel ordre DOJO gère-t-il les requêtes ajax?
<button type="button" id="submitAddTeamButton" dojoType="dijit.form.Button">Add Team
<script type="dojo/method" event="onClick" args="evt">
sendForm("ajaxResult1", "addTeamForm");
dijit.byId("addTeamDialog").hide();
getLocations("locationsTeam");
</script>
function sendForm(target, form){
var targetNode = dojo.byId(target);
var xhrArgs = {
form: form,
url: "ajax",
handleAs: "text",
load: function(data) {
targetNode.innerHTML = data;
},
error: function(error) {
targetNode.innerHTML = "An unexpected error occurred: " + error;
}
}
//Call the asynchronous xhrGet
var deferred = dojo.xhrPost(xhrArgs);
}
function getLocations(id) {
var targetNode = dojo.byId(id);
var xhrArgs = {
url: "ajax",
handleAs: "text",
content: {
location: "yes"
},
load: function(data) {
targetNode.innerHTML = data;
},
error: function(error) {
targetNode.innerHTML = "An unexpected error occurred: " + error;
}
}
//Call the asynchronous xhrGet
var deferred = dojo.xhrGet(xhrArgs);
}
Pourquoi cela se produit-il? Est-il possible de faire en sorte que la première requête soit complète avant la seconde?
Afin de réduire les possibilités de pourquoi cela se passe j'ai essayé de définir la propriété de cache xhrGet false mais le résultat est toujours le même.
Aidez s'il vous plaît!
bonne idée! Cela a fonctionné et simplifié mon code. Je l'envoie maintenant comme une demande et ayant la réponse soit la liste déroulante mise à jour avec l'objet ajouté. – mm2887