Функция успеха 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';
},
Но пока сообщение не отображается.
Ответы
Ответ 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");
},
});