在 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
在 Win10 / Apache 2.4 / PHP 7.0.10 x64 下未加载 cURL