我的ajax问题得到了

时间:2013-08-09 17:09:14

标签: jquery ajax

我基本上只是从网站上复制了这个用于ajax get的简写。它继续说$未定义。

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

为什么会发生这种情况?

1 个答案:

答案 0 :(得分: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>

但是,一旦将此页面投入生产,请确保将其更改回来。