Подтвердить что ты не робот

Функция успеха Ajax

Я использую пост Ajax для отправки данных формы на сервер, проверки и последующего возврата сообщения на основании того, были ли данные действительны и могут быть сохранены. Моя функция успеха в моем сообщении ajax не работает. Вот сообщение ajax и отображение сообщения об успешном завершении:

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;

Однако на этикетке не отображается сообщение. Я попытался установить переменную successmessage в заданное значение в коде, и он отобразился отлично, поэтому в моей функции успеха должно быть что-то не так, я просто не вижу, что? Я также попытался установить обратный вызов ошибки следующим образом:

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

Но пока сообщение не отображается.

4b9b3361

Ответ 1

Это потому, что Ajax асинхронен, функция success или error будет вызываться позже, когда сервер ответит клиенту. Итак, просто переместите части в зависимости от результата в свою успешную функцию:

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;

Ответ 2

Ответ, приведенный выше, не может решить мою проблему. Поэтому я изменяю async на false, чтобы получить предупреждающее сообщение.

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");
            },
        });