Mon fichier PHP fait 2 opérations: 1. Soumet les données du formulaire dans la table db, 2. Envoie un e-mail.
Ce que je veux faire, c'est afficher les messages d'état via ajax. Par exemple, "Première opération terminée, veuillez attendre la seconde", puis lorsque la deuxième sera terminée, afficher le message suivant "Deuxième opération également". Maintenant, mon ajax ressemble à ça.
Comment puis-je le modifier?
//add status data to form
form.data('formstatus', 'submitting');
if (validate()) {
//send data to server for validation
$.ajax({
url: formUrl,
type: formMethod,
dataType: "json",
data: formData,
success: function (data) {
$.notifyBar({
cls: data.status,
html: data.message
});
form.data('formstatus', 'idle');
}
});
}
3 réponses
Dans le bloc de réussite, vous pouvez effectuer un autre appel ajax. C'est le plus simple. Vous pouvez le faire dans .success (), .ajaxSucces (), .complete () ou .then () comme ceci: $ .ajax (...). Success (...);
Idéalement, vous incorporeriez le code dans une fonction, par exemple
$.ajax({
url: formUrl,
type: formMethod,
dataType: "json",
data: formData,
success: function (data) {
notifyResponse(data);
form.data('formstatus', 'idle');
sendMail();
}
});
function sendMail() {
$.get(mailUrl, function(data) { // or $.post(...
notifyResponse(data);
});
}
function notifyResponse(data) {
$.notifyBar({
cls: data.status,
html: data.message
});
}
Une autre approche différente de celle suggérée par stivlo consiste à utiliser une sorte d'interrogation longue comme celle expliquée dans cette réponse:
Comment puis-je implémenter le "Long Polling" de base?
Pas si simple et avec un problème plus technique sur la configuration du serveur.
Si vous devez effectuer deux opérations qui ont des temps d'exécution différents, envoyez simplement deux requêtes AJAX différentes et obtenez-en les réponses.
Divisez votre service PHP en deux parties. Si la deuxième partie dépend de la première, au lieu d'envoyer les deux demandes en même temps, envoyez la deuxième demande lorsque la première revient.
En d'autres termes, dans votre rappel de réussite, vous allez informer l'utilisateur que la première opération est terminée et vous passez à la deuxième opération, dont le rappel de succès informera que la deuxième opération est terminée.
Questions connexes
De nouvelles questions
php
PHP est un langage de script largement utilisé, de haut niveau, dynamique, orienté objet et interprété, principalement conçu pour le développement Web côté serveur. Utilisé pour les questions sur le langage PHP.