在 https 下未加载重力表单,未定义 jQuery

Posted

技术标签:

【中文标题】在 https 下未加载重力表单,未定义 jQuery【英文标题】:Gravity Forms not loading under https, jQuery is not defined 【发布时间】:2012-10-25 06:22:19 【问题描述】:

我在我的 WordPress 网站上使用 Gravity Forms 插件。我通过 HTTPS 提供页面,这破坏了表单。

看起来问题在于该站点如何尝试加载 jQuery。页面上有 23 个 javascript 错误,这似乎是由于 jQuery 加载失败"Uncaught ReferenceError: jQuery is not defined"

如果我转到源试图提取 jQuery 文件的页面,你会看到 error:https://code.jquery.com/jquery-1.7.1.min.js?ver=3.4.2

错误截图:

而这个截图是页面源码中的参考:

所以有人告诉我我想调查一下——这就是最终问题所在,但我真的不知道下一步该做什么。

失败是因为 Gravity Forms、WordPress 的 HTTPS 插件还是我的 SSL 证书?

【问题讨论】:

jQuery 内容交付网络不支持 https。您需要从 Google 或 Microsoft CDN 加载 jQuery,而 do support https. 您如何做到这一点取决于哪个脚本从 code.jquery.com 请求文件。它是由您的主题文件之一或您的插件之一请求的吗? (您可以对 wp-content 文件夹进行全文搜索以查找“code.jquery.com”。) 嘿,谢谢你这么快就给我指出了正确的方向!我刚刚安装了一个允许我选择 CDN 的 Wordpress 插件。 wordpress.org/extend/plugins/wp-jquery-cdn/installation 但是还是不行,而且如果我查看源代码,它仍然在请求 code.jquery 而不是 google,所以我猜它一定是插件,对吧?非常感谢您的帮助! 我终于在functions.php文件中将URL改成了Google的CDN。现在它正在请求正确的 CDN 并完美运行。感谢您的帮助伙伴! 我已经发布了我的评论作为答案,展示了如何通过 HTTPS 包含 jQuery。使用wp_enqueue_script 函数尤为重要,这样如果其他文件或插件使用它,您最终不会包含两次或更多 jQuery。 【参考方案1】:

code.jquery.com 域不支持 https。您需要从您自己的域或从 Google 或 Microsoft CDN 加载 jQuery。

要通过 https 从您自己的域中加载 jQuery,只需执行以下操作:

<?php wp_enqueue_script('jquery'); ?>

要通过 https 从 Google 的 CDN 加载它,请执行以下操作:

<?php 
function jquery_cdn() 
   wp_deregister_script('jquery');
   wp_register_script('jquery', '//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js', false, null);
   wp_enqueue_script('jquery');


add_action('wp_enqueue_scripts', 'jquery_cdn');

在上述示例中省略“https”是故意的;它确保 jQuery 将通过与您的站点相同的协议加载,无论是 HTTP 还是 HTTPS。

【讨论】:

以上是关于在 https 下未加载重力表单,未定义 jQuery的主要内容,如果未能解决你的问题,请参考以下文章

关于JSON.parse在ie6,ie7下未定义的issue

在 wordpress 插件下未调用 Ajax 功能

在 Win10 / Apache 2.4 / PHP 7.0.10 x64 下未加载 cURL

grafana生产app_mode是不是无法加载data/plugins目录下未签名的插件?

为啥我的函数在严格模式(函数形式)下未定义?

如何为未登录用户保存重力表单数据