【发布时间】:2018-09-23 02:21:41
【问题描述】:
我在使用 .getJSON JQuery 方法从外部 API* 返回数据时遇到问题,但 .ajax 方法可以正常工作。
将此代码与 .ajax 一起使用对我有用:
var apiKey = 'myKey',
requestURL = 'https://api.propublica.org/congress/v1/115/senate/members.json';
$.ajax({
url: requestURL,
type: "GET",
dataType: 'json',
headers: {'X-API-Key': apiKey }
}).done(function(data){
console.log(data)
});
使用 $.getJSON 对我不起作用:
var apiKey = 'myKey',
requestURL = 'https://api.propublica.org/congress/v1/115/senate/members.json';
$.getJSON(requestURL + '?callback=?', {
'X-API-Key': apiKey
}, function(data){
console.log(data);
});
唯一的区别是我添加了“?callback=?”到 url 作为文档和几个帖子/教程所说的那样,它将返回 JSONP。我已尝试更改 url 以查看是否可以修复它,但几个小时后我无法使其正常工作。
我得到的控制台错误是这样的:
GET https://api.propublica.org/congress/v1/115/senate/members.json?callback=jQuery110203399070889473792_1523562076495&X-API-Key=myKey&_=1523562076496net::ERR_ABORTED
如果我采用“?callback=?”在 getJSON 示例的 url 之外,我得到了上面的消息以及这个额外的错误消息:
无法加载https://api.propublica.org/congress/v1/115/senate/members.json?X-API-Key=myKey:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'http://localhost:81' 不允许访问。响应的 HTTP 状态代码为 401。
我很困惑为什么这不起作用,因为 getJSON 应该是我在 JQuery getJSON Documentation 上面的确切 .ajax 调用的简写。
你知道为什么 .getJSON 不起作用但 .ajax 会起作用吗?
【问题讨论】: