Я использую пост 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'; },
Но пока сообщение не отображается.
Это связано с тем, что 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;
Ответ, приведенный выше, не может решить мою проблему. Поэтому я изменяю 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"); }, });