【发布时间】:2017-08-10 16:16:39
【问题描述】:
我设法通过使用 $.getJSON 从 flicker feed api 获取 json 响应,但是当我尝试使用 Fetch 进行此操作时,我似乎只获得了 XML 响应。
这行得通:
var flickerAPI = "http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?";
$.getJSON(flickerAPI, {
tags: "searchTerm",
tagmode: "any",
format: "json"
})
.done(function (data) {
//....
});
这不起作用:
var flickerAPI = "http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?";
var request = new Request(flickerAPI, {
mode: 'no-cors',
tags: 'searchTerm',
tagmode: 'any',
format: 'json'
});
fetch(request)
.then(function (res) {
return res.json();
})
.then(function (text) {
console.log(text);
});
我也想了解为什么在使用 Fetch API 时我会得到: “请求的资源上不存在'Access-Control-Allow-Origin'标头。因此,不允许访问源'null'。如果不透明的响应满足您的需求,请将请求的模式设置为'no-cors'以获取禁用 CORS 的资源。”并且在使用 $.getJSON 时没有。 谢谢!!
【问题讨论】:
-
我从未使用过 API 或 fetch,但根据文档 flickr.com/services/feeds/docs/photos_public (tags, tagmode, format, ...) 是查询参数,这意味着它们必须在 URL本身,
photos_public.gne?format=json&tagmode=any&jsoncallback=...?? -
你有没有找到用 fetch() 来做这件事的方法,我现在正在尝试同样的事情并得到同样的错误。希望不必切换到jsonp
标签: javascript json cors fetch-api flicker