4

我从以下加载了一个 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 中存在错误,为什么会在本地发生这种情况?

4

3 回答 3

15

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

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

于 2013-04-03T18:29:09.467 回答
2

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

于 2013-04-03T18:29:32.843 回答
0

我在如何使用 Bootstrap CDN?而且,正如 Juhana 所说,问题是加载 jQuery 时缺少协议。

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

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

于 2014-11-03T22:15:01.863 回答