Wordpress 重力表单上的js错误

Wordpress 重力表单上的js错误,wordpress,gravity-forms-plugin,Wordpress,Gravity Forms Plugin,我们正在wpengine上托管wordpress站点。在这一个网站上,我们使用重力形式,但由于某种原因,它停止了工作。我们得到的只是一个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

我们正在wpengine上托管wordpress站点。在这一个网站上,我们使用重力形式,但由于某种原因,它停止了工作。我们得到的只是一个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

现在,如果我在我的本地机器上设置该站点,它将运行得非常好。有人遇到过这个问题吗?有人知道为什么会发生这种情况吗?

这个问题最常见的原因是gravityforms.js文件被包含在页脚下,而它应该在页眉上

如果要使用函数调用嵌入表单,则应使用第二个函数调用将脚本和样式表包含在header.php中

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

好的,我解决了这个问题。出于某种原因,form_display.php文件不是最新的。因此,我只需将一个文件推送到服务器,这就解决了它。

我遇到了完全相同的问题,并设法找到了一些主题代码

我使用的是,它取消注册默认jQuery JS,并使用Google CDN添加自己的jQuery JS,如:

// 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 );
    }
}
如您所见,它取消注册了默认的
jquery
脚本,然后添加自己的
cdnjquery
脚本,这很好,除了重力表单脚本依赖于
jquery
而不是
cdnjquery
之外

因为他们看不到默认的
jquery
脚本,所以他们不会加载,而且似乎会无声地失败,只是发出这个JavaScript错误,因为所说的JavaScript是在不检查依赖项的情况下加载的

无论如何,我通过将bones register脚本重新命名为
jquery
,修复了这个问题,这可能不是修复这个问题的最佳方法,但它是有效的

或者,注释掉这两段代码也可以解决这个问题(并保留默认的WordPressJS)


不确定其他主题是否会这样做,但可能值得在主题中搜索所有
wp\u deregister\u脚本('jquery')
或至少切换到默认主题,查看是否遇到相同的问题(我就是这样指出的)。

我刚刚遇到这个问题,在我的例子中,它是由CloudFlare RocketLoader引起的™.
在我禁用它之后,加载表单没有问题。

您还可以将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>

将重力表单的脚本移动到页脚

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

忘了提到gravity forms是1.8.8版的,只是看了一下gravityforms.js文件,我看不到任何名为gformInitSpinner的函数,事实上,插件文件夹中的其他任何地方都看不到。这应该放在哪里?感谢您花时间重播。表单是通过shortcode添加到模板的,正如我所说的(我想这将有助于某人找出问题),它在我的本地机器上工作,但在wpengine上没有任何其他想法?这对我来说是有效的,尽管它导致了两个PHP警告。解决方案是在字符串数组键周围加引号:“form_id”,“ajax”@Forxs
form_id
&
ajax
是根据
gravity\u form_enqueue\u脚本($form_id,$is_ajax)的变量(占位符参数)。警告的原因是它们被解释为常量。完全删除该函数调用,只需调用该函数一次,为第一个参数
$form_ID
传递一个数字ID,为第二个参数
$ajax
传递一个布尔值。您好,您能否共享推送到服务器上的表单_display.php。不建议对脚本和样式进行硬编码,因为它们可能因表单使用的功能而异。当将来的版本更改Gravity Forms 2.5中新标记的文件名时,它也将中断。默认情况下,从Gravity Forms 2.5开始,这将启用。