0

$.ajax我正在尝试像这样使用 jQuery v1.9 使用 Mongolab WebAPI

$.ajax({
  url: "https://api.mongolab.com/api/1/databases/my-db/collections/my-coll?apiKey=myAPIKey",
  type: "GET",
  contentType: "application/json"
});

我以为是跨域请求,contentType 应该是application/javascript,dataType 应该是JSONP,但令人惊讶的是,它成功返回了带有 .json 的 json 结果ContentType 'application/json'。我很困惑,如果 jquery 封装了 ajax 调用并使用application/javascript.

有人可以给我一个解释,尽管这可能看起来是一个菜鸟问题?

4

2 回答 2

2

当我尝试使用 jsfiddle.net 在 safari 中运行该代码时,我得到:

Failed to load resource: Origin http://fiddle.jshell.net is not allowed by Access-Control-Allow-Origin.

这意味着 safari 询问api.mongolab.com是否fiddle.jshell.net允许通过 ajax 调用访问它,而 mongolab.com 要么没有响应,要么响应为“不,不允许它”。也许如果你的域名是 localhost 或者如果它是在 mongolab 中注册的,那么它将被允许执行。

但是它只适用于现代浏览器。http://en.wikipedia.org/wiki/Cross-origin_resource_sharing

于 2013-07-01T06:20:43.897 回答
-1

尝试将 crossDomain 设置为 true

$.ajax({
  url: "https://api.mongolab.com/api/1/databases/my-db/collections/my-coll?apiKey=myAPIKey",
  type: "GET",
  contentType: "application/json",
  crossDomain : true
});
于 2013-07-01T06:24:55.073 回答