我正在尝试使用jQuery v1.9 $.ajax
这样使用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
,但令人惊讶的是,它成功返回ContentType 'application/json'
的json结果。我很困惑,如果jquery封装了ajax调用并自动使用application/javascript
调用服务器。
有人可以给我一个解释,虽然这可能看起来像一个菜鸟问题吗?
答案 0 :(得分: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
答案 1 :(得分:-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
});