WPForms не отправляет формы при использовании AJAX: причины и пошаговое решение

Диагностика проблемы: почему WPForms не отправляет форму с AJAX

AJAX-отправка форм в WPForms позволяет избежать перезагрузки страницы, улучшая UX. Однако иногда форма может не отправляться — при этом страница не обновляется, и нет сообщения об ошибке. Первое, что нужно сделать — определить источник проблемы.

  • Проверить консоль браузера на наличие ошибок JavaScript.
  • Посмотреть на сетевые запросы (Network) вкладки разработчика — отправляется ли AJAX-запрос и какой ответ от сервера.
  • Отключить плагины, которые могут конфликтовать с WPForms (например, кеширующие или оптимизирующие скрипты).
  • Проверить настройки сервера, особенно правила mod_security или firewall, которые могут блокировать AJAX-запросы.
  • Убедиться, что тема не переопределяет скрипты WPForms или не конфликтует с ними.

Основные причины и их устранение

1. Конфликт JavaScript или ошибка скрипта

Если в консоли браузера есть ошибки, это может прервать выполнение AJAX-запроса.

Uncaught TypeError: jQuery(...).someFunction is not a function

Решение:

  • Проверьте, не подключается ли jQuery дважды или в неправильной версии.
  • Отключите сторонние скрипты, которые могут конфликтовать.
  • Используйте jQuery.noConflict() при необходимости.

2. Кеширование AJAX-запросов

Некоторые плагины кеширования могут кешировать AJAX-запросы, что приводит к неправильной работе формы.

Решение:

  • Добавьте исключение для URL AJAX-запросов в настройках кеша.
  • В .htaccess или в настройках сервера отключите кеширование для admin-ajax.php.

3. Сервер блокирует AJAX-запросы (mod_security, firewall)

Защитные механизмы сервера могут воспринимать AJAX-запросы как подозрительный трафик и блокировать их.

Решение:

  • Проверьте логи сервера на предмет блокировок.
  • Добавьте исключения в правила mod_security для admin-ajax.php.
  • Обратитесь в техподдержку хостинга для разблокировки.

4. Неправильная настройка WPForms или темы

Если тема или плагин меняют поведение отправки формы, AJAX может не работать.

Решение:

  • Переключитесь на стандартную тему WordPress, например, Twenty Twenty-Two, чтобы проверить влияние темы.
  • Временно отключите плагины, кроме WPForms.
  • Проверьте, не отключена ли опция AJAX в настройках WPForms.

Пошаговое решение проблемы с примером кода

  1. Включите отладку JavaScript в браузере (F12 > Console).
  2. Проверьте, что AJAX-скрипт WPForms загружен:
if (typeof wpforms !== 'undefined') {
    console.log('WPForms scripts loaded');
} else {
    console.error('WPForms scripts not loaded');
}
  1. Отключите кеширование для admin-ajax.php в .htaccess:
<Files admin-ajax.php>
    Header set Cache-Control "no-cache, no-store, must-revalidate"
    Header set Pragma "no-cache"
    Header set Expires 0
</Files>
  1. Если используется плагин кеширования (например, WP Super Cache, W3 Total Cache), добавьте исключение для AJAX-запросов.
  2. Добавьте следующий фильтр в functions.php для отключения кеширования при AJAX-запросах WPForms:
add_action('init', function() {
    if (defined('DOING_AJAX') && DOING_AJAX) {
        nocache_headers();
    }
});
  1. Проверьте, не блокирует ли сервер запросы, выполнив CURL-запрос к admin-ajax.php:
curl -I https://example.com/wp-admin/admin-ajax.php

Ответ должен содержать статус 200.

Проверка результата после внедрения

  • Отправьте форму с включенной консолью браузера — ошибок JavaScript быть не должно.
  • Во вкладке Network должен появиться POST-запрос к admin-ajax.php с кодом ответа 200.
  • Форма должна успешно отправляться, и вы увидите сообщение об успешной отправке или перенаправление.
  • Проверьте, что данные формы сохраняются в базе данных или отправляются на email.

Частые ошибки и как их исправить

ОшибкаПричинаРешение
Нет ответа от AJAX Сервер блокирует запрос (mod_security) Обратиться к хостеру, добавить исключения для admin-ajax.php
Ошибка JavaScript в консоли Конфликт с другим скриптом Отключить конфликтующие плагины, проверить версии jQuery
Форма отправляется, но страница перезагружается AJAX отключен или не работает Проверить настройки WPForms, включить AJAX
Данные формы не сохраняются Ошибка в обработчике данных Проверить логи, отладить PHP-обработчик

Практические советы по безопасности и производительности

  • Всегда используйте nonce-поля WPForms для защиты AJAX-запросов от CSRF.
  • Отключайте кеширование для AJAX-запросов, чтобы избежать проблем с устаревшими данными.
  • Минимизируйте количество сторонних скриптов на странице с формой.
  • Используйте последние версии WPForms и WordPress для получения обновлений безопасности и исправлений багов.
  • Мониторьте логи сервера на предмет подозрительных блокировок AJAX-запросов.
WPForms: автоматическая обновление формы без перезагрузки страницы
10.03.2026
WPForms: заполнение формы через AJAX без перезагрузки страницы
05.02.2026
Автоматическое удаление старых записей из WPForms в WordPress: практическое решение
27.03.2026
WPForms и ответ на AJAX-запросы без перезагрузки страницы в WordPress
12.12.2025
Как добавить многоуровневую валидацию в WPForms для WordPress
16.02.2026