web-dev-qa-db-fra.com

Fonction de succès Ajax

J'utilise un message Ajax pour soumettre des données de formulaire au serveur, être validé, puis renvoyer un message indiquant si les données étaient valides et pouvaient être stockées. Ma fonction de succès dans mon message ajax ne fonctionne pas bien. Voici le message ajax et l'affichage du message de réussite:

jQuery.ajax({           
    type:"post",
    dataType:"json",
    url: myAjax.ajaxurl,
    data: {action: 'submit_data', info: info},
    success: function(data) {
        successmessage = 'Data was succesfully captured';
    }
});

$("label#successmessage").text(successmessage);
$(":input").val('');
return false;

Aucun message ne s'affiche cependant sur l'étiquette. J'ai essayé de définir la variable successmessage sur une valeur définie dans le code et elle s'affiche correctement. Il doit donc y avoir un problème avec ma fonction de réussite. Je ne vois pas quoi? J'ai aussi essayé de définir le rappel d'erreur comme ceci:

error: function(data) {             
    successmessage = 'Error';
},

Mais toujours aucun message ne s'affiche.

13
Mikey

En effet, Ajax étant asynchrone, la fonction success ou error sera appelée ultérieurement, lorsque le serveur répondra au client. Donc, déplacez simplement les pièces en fonction du résultat dans votre fonction de succès comme ceci:

jQuery.ajax({

            type:"post",
            dataType:"json",
            url: myAjax.ajaxurl,
            data: {action: 'submit_data', info: info},
            success: function(data) {
                successmessage = 'Data was succesfully captured';
                $("label#successmessage").text(successmessage);
            },
            error: function(data) {
                successmessage = 'Error';
                $("label#successmessage").text(successmessage);
            },
        });

        $(":input").val('');
        return false;
20
Serge K.

La réponse donnée ci-dessus ne peut pas résoudre mon problème. Je modifie donc async en faux pour obtenir le message d'alerte.

jQuery.ajax({
            type:"post",
            dataType:"json",
            async: false,
            url: myAjax.ajaxurl,
            data: {action: 'submit_data', info: info},
            success: function(data) {
                alert("Data was succesfully captured");
            },
        });
1
zhao