@Ingbond

Как отправить форму используя AJAX в Wordpress?

Недавно начал осваивать wordpress и не знаю как решить следующую проблему. Есть на сайте форма обратной связи,которая работает используя AJAX.
//по нажатию на кнопку срабатывает функция "sendAjaxForm"//
$("#sendButton").click(
		function(){
			sendAjaxForm('error', 'ajax_form', 'ajax.php');
			return false;
		}
	);

    function sendAjaxForm(result_form, ajax_form, url) {
        jQuery.ajax({
            url:     url, //url страницы где обрабатывается отправленная форма
            type:     "POST", //метод отправки
            dataType: "html", //формат данных
            data: jQuery("#"+ajax_form).serialize(),  // Сеарилизуем объект
            success: function(response) { //Данные отправлены успешно
              result = jQuery.parseJSON(response);
              document.getElementById(result_form).innerHTML =""+result.error;
            },
            error: function(response) { // Данные не отправлены
              document.getElementById(result_form).innerHTML = "Ошибка. Данные не отправленны.";
    
            }
        });
      }


Так вот при импорте исходных файлов возникает ошибка 404 Not Found - /*сайт*/ajax.php".
Можно ли решить проблему "безболезненно"?
  • Вопрос задан
  • 1227 просмотров
Решения вопроса 1
werftgyhj
@werftgyhj
js = just sex
Урл в WP для всех Ajax запросов один /wp-admin/admin-ajax.php
что бы в аjax обработал нудная функция для этого в свойстве data нужно указать свойство action
К примеру
function sendAjaxForm(result_form, ajax_form, url) {
        jQuery.ajax({
            url:     url, //url страницы где обрабатывается отправленная форма
            type:     "POST", //метод отправки
            dataType: "html", //формат данных
            data: {
                 action: myAction,
                 jQuery("#"+ajax_form).serialize()
             },  
            success: function(response) { //Данные отправлены успешно
              result = jQuery.parseJSON(response);
              document.getElementById(result_form).innerHTML =""+result.error;
            },
            error: function(response) { // Данные не отправлены
              document.getElementById(result_form).innerHTML = "Ошибка. Данные не отправленны.";
    
            }
        });
      }

и в wp добавляем action
add_action('wp_ajax_{action}', 'my_action_callback'); //где {action} - тот самый экшн из data а my_action_callback функция которая должна его обработать
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@ommunist
Делаю и поддерживаю мультиязычные сайты
Ну вот, Артем Можаров все рассказал вам. Я только добавлю, чтобы вы проверили на сайте production, не запрещен ли для обращений политикой безопасности сайта собственно URL /wp-admin/admin-ajax.php . А то бывают случаи.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы