jQuery CDN 未在 LocalHost 上加载

Posted

技术标签:

【中文标题】jQuery CDN 未在 LocalHost 上加载【英文标题】:jQuery CDN is not loading on LocalHost 【发布时间】:2013-03-25 13:48:36 【问题描述】:

我有一个 jquery cdn 从以下加载:

<head>
.
.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
</head>

然后在正文中我有我的脚本来源

<body>
.
.<script src="app.js"></script>
</body>

这都是在本地,但是当我在浏览器中查看时,我在控制台中不断收到以下错误:

GET file://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
Uncaught ReferenceError: $ is not defined 

我假设这是在说 jQuery 函数“$...”未定义,因为 CDN 的 GET 中存在错误,为什么会在本地发生这种情况?

【问题讨论】:

尝试通过调试查看正在发生的事情。例如,如果您使用 Chrome 打开检查器,转到“网络”选项卡,然后刷新页面。您将能够查看您的请求是否失败等。 @NickMitchinson 它说 status:(failed) & Type:PENDING 【参考方案1】:

您实际上不是在 localhost (http://localhost) 上运行,而是在本地文件系统 (file:///path/to/whatever.html) 上运行。该协议通过// 链接复制到file://ajax.googleapis.com,这当然不存在。

您应该在您的计算机上设置一个服务器,以便您有一个使用 http 协议访问的 实际 localhost。它还有其他好处,因为当直接从文件系统加载页面时,浏览器在其他方面的行为也会有所不同。

【讨论】:

确实,如果 CDN 调用失败,您应该尝试回退到您自己的网络服务器上的文件。这也适用于file://,因为你只是回退【参考方案2】:

您是否尝试过删除“src”属性开头的“//”而改用“http://”?由于这些斜杠,它可能会将“localhost”附加到 URL 的开头。

【讨论】:

它可以解决问题,但您将失去使用// url 的好处(根据当前 url 使用的自动使用 http 或 https)。【参考方案3】:

我在How to use Bootstrap CDN? 中回答了一个类似的问题,正如 Juhana 所说,问题是加载 jQuery 时缺少协议。

当您使用 http 或 https 时,无协议 CDN 可以工作,因为浏览器会将前缀添加到 jQuery URL。

但是当使用本地 html 文件时,缺少的协议将是 file: 并且浏览器将无法在 file://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js 无法加载它的情况下找到 jQuery。在这种情况下,您必须手动添加协议,如果您最终在线使用该页面,这将是一个遗憾,因为无协议的 URL 更好,并且对缓存更友好(http://encosia.com/cripple-the-google-cdns-caching-with-a-single-character/)。

【讨论】:

以上是关于jQuery CDN 未在 LocalHost 上加载的主要内容,如果未能解决你的问题,请参考以下文章

React Native 未在 localhost 上运行

使用 xampp 未在 localhost 上加载 css 文件

cookie 未在 chrome 或 firefox 中的 localhost 上设置

文件未在 localhost 上更新

Pusher 未在 Heroku Rails 应用程序上触发,但在 localhost:3000 上工作正常

未捕获的 ReferenceError:$ 未在 Laravel 中的 http://localhost/project/public/user/1/edit:308:9 处定义 [重复]