it-swarm.com.ru

Функция успеха 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';
},

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

13
Mikey

Поскольку 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;
20
Serge K.

Ответ, приведенный выше, не может решить мою проблему. Поэтому я изменяю 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");
            },
        });
1
zhao