Подтвердить что ты не робот

Js ошибка при гравитационных формах

Мы размещаем сайты Wordpress на wpengine. На этом одном сайте мы используем гравитационные формы, но почему-то перестали работать. Все, что мы получаем, это ошибка js

Uncaught ReferenceError: gformInitSpinner is not defined (index):135
(anonymous function) (index):135
o jquery.min.js:2
p.fireWith jquery.min.js:2
e.extend.ready jquery.min.js:2
c.addEventListener.B

Теперь, если я настроил сайт на своей локальной машине, он отлично работает. Кто-нибудь сталкивался с этой проблемой? Кто-нибудь понял, почему это происходит?

4b9b3361

Ответ 1

Наиболее частая причина этой проблемы - файл gravityforms.js, включаемый в нижний колонтитул, когда он должен быть в верхнем колонтитуле.

Если вы встраиваете форму с помощью вызова функции, есть второй вызов функции, который вы должны использовать для включения скриптов и таблиц стилей в header.php

gravity_form_enqueue_scripts(form_id, ajax);
gravity_form_enqueue_scripts(4, true);

https://docs.gravityforms.com/gravity_form_enqueue_scripts/

Ответ 2

У меня была точно такая же проблема, и мне удалось отследить ее до некоторого кода темы.

Я использовал тему костей, которая отменяет регистрацию jQuery JS по умолчанию и добавляет свою собственную, используя Google CDN, например:

// we don't need the Wordpress jquery as we are loading our own version
add_action('wp_enqueue_scripts', 'stnic_remove_jquery');
function stnic_remove_jquery(){
    if(!is_admin()) {
        wp_deregister_script('jquery');
    }
}


// loading modernizr and jquery, and reply script
function bones_scripts_and_styles() {
    if (!is_admin()) {
        wp_register_script( 'cdn-jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js', array(), '', false );
    }
}

Как вы можете видеть, он deregister является сценарием по умолчанию jquery, а затем добавляет собственный сценарий cdn-jquery, что хорошо, кроме того факта, что сценарии форм Gravity зависят от jquery и не cdn-jquery!

Поскольку они не могут видеть скрипт по умолчанию jquery, они не загружаются, и может показаться, что они молча терпят неудачу, просто выдавая эту ошибку JavaScript, потому что указанный JavaScript загружается без проверки зависимостей.

В любом случае, я исправил это, переименовав скрипт регистрации кости в jquery, возможно, это не лучший способ исправить это, но он работает.

Кроме того, закомментирование обоих фрагментов кода также исправит это (и оставит там установленный по умолчанию Wordpress JS).

Не уверен, что другие темы делают это, но, возможно, стоит выполнить поиск по всей вашей теме для wp_deregister_script('jquery'); или, по крайней мере, переключиться на тему по умолчанию, чтобы увидеть, если у вас возникла та же проблема (именно так, как я это определил).

Ответ 3

ОК, я решил проблему. По какой-то причине файл form_display.php по какой-то причине не обновлялся. Поэтому я просто нажал этот файл на сервер, и это исправило его.

Ответ 4

Вы также можете добавить необходимые сценарии GF вручную в header.php (никаких действий по регистрации/отмене регистрации jQuery не требуется!). Пример:

<link rel='stylesheet' id='gforms_formsmain_css-css'  href='/wp-content/plugins/gravityforms/css/formsmain.min.css' type='text/css' media='all' />
<link rel='stylesheet' id='gforms_ready_class_css-css'  href='/wp-content/plugins/gravityforms/css/readyclass.min.css' type='text/css' media='all' />
<link rel='stylesheet' id='gforms_browsers_css-css'  href='/wp-content/plugins/gravityforms/css/browsers.min.css' type='text/css' media='all' />
<script type='text/javascript' src='/wp-content/plugins/gravityforms/js/jquery.json-1.3.js'></script>
<script type='text/javascript' src='/wp-content/plugins/gravityforms/js/gravityforms.min.js'></script>

Ответ 5

У меня была эта проблема, и в моем случае это было вызвано CloudFlare RocketLoader ™. После того, как я отключил его, форма загрузилась без проблем.

Ответ 6

Переместить скрипты гравитационных форм в нижний колонтитул

add_filter("gform_init_scripts_footer", "init_scripts");
function init_scripts() {
    return true;
}