-5

我基本上只是从网站上复制了这个,以获得 ajax 的速记。它一直说 $ 没有定义。

 $.get('https://api.parse.com/1/classes/chats?order=-createdAt', function(data) {
   console.log(data) 
}
);

任何想法为什么会发生这种情况?

4

1 回答 1

5

基于@Sergio 的评论,你会想要这样的东西:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
    $.get('https://api.parse.com/1/classes/chats?order=-createdAt', function(data) {
        console.log(data) 
    });
</script>

但是,如果您将其作为本地文件加载,您的浏览器将无法以这种方式加载 jQuery 库。这是因为如果您加载本地文件,地址栏将类似于file:///<path to file>.

当您使用加载脚本时,src="//<script您基本上是在告诉浏览器“填写我在加载此页面时使用的任何协议”。因此,如果您通过 访问您的页面http://somesite,那么浏览器将使用“http:”作为协议。但是,如果您加载本地文件,浏览器将使用“file:”作为协议,因此将尝试加载 jQuery,因为 file://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js这当然不会工作。

为什么浏览器允许这样做?想象一下,您已经编写了这个包含一些文件的好网站,但它包含的文件是 http。但是,当您将该站点投入生产时,您将其作为 https 运行,因为它需要安全。大多数现代浏览器在尝试加载该脚本时会显示“不安全内容”警告(因为它使用 http,因此不安全),有些浏览器会默默地加载失败(在 jQuery 或其他 JavaScript 库等情况下) ,这可能会导致页面的整个部分无法工作)。省略协议允许浏览器根据用户为整个页面请求的协议来决定使用什么协议。

如果这是您现在面临的问题(我想是的,如果您以这种方式加载页面),那么这就是您想要的代码:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

但是,一旦您将此页面投入生产,请务必将其改回。

于 2013-08-09T17:22:46.463 回答