web-dev-qa-db-de.com

Ajax-Erfolgsfunktion

Ich verwende einen Ajax-Beitrag, um Formulardaten an den Server zu senden, überprüft zu werden und anschließend eine Nachricht zurückzusenden, die darauf basiert, ob die Daten gültig waren und gespeichert werden konnten. Meine Erfolgsfunktion in meinem Ajax-Beitrag läuft jedoch nicht. Hier ist der Ajax-Beitrag und die Anzeige der Erfolgsmeldung:

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;

Auf dem Etikett wird jedoch keine Nachricht angezeigt. Ich habe versucht, die Variable successmessage auf einen festgelegten Wert im Code zu setzen, und es wurde gut angezeigt. Daher muss bei meiner Erfolgsfunktion etwas nicht stimmen. Ich kann einfach nicht sehen, was? Ich habe auch versucht, den Fehlerrückruf wie folgt einzustellen:

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

Es wird jedoch immer noch keine Nachricht angezeigt.

13
Mikey

Da Ajax asynchron ist, wird die Funktion success oder error später aufgerufen, wenn der Server den Client antwortet. Bewegen Sie also einfach Teile abhängig vom Ergebnis in Ihre Erfolgsfunktion:

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.

Die oben gegebene Antwort kann mein Problem nicht lösen. Daher wechsle ich async in false, um die Warnmeldung zu erhalten.

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