Angularjs JSONP意外语法错误(API不支持JSONP)
我的职能:Angularjs JSONP意外语法错误(API不支持JSONP),angularjs,jsonp,Angularjs,Jsonp,我的职能: function getMarketData_() { $http({ method: 'JSONP', url: 'https://api.coinmarketcap.com/v2/ticker/', }).then(function(response) { console.log('ran'); }).catch(function(response) { console.log('
function getMarketData_() {
$http({
method: 'JSONP',
url: 'https://api.coinmarketcap.com/v2/ticker/',
}).then(function(response) {
console.log('ran');
}).catch(function(response) {
console.log('Error');
});
}
错误:
Uncaught SyntaxError: Unexpected token :
返回的JSON中错误的位置:
API不支持JSONP 要测试,请单击: 支持JSONP的API将返回如下内容:
test({
"data": {
"1": {
"id": 1,
"name": "Bitcoin",
"symbol": "BTC",
"website_slug": "bitcoin",
"rank": 1,
"circulating_supply": 17095362.0,
"total_supply": 17095362.0,
"max_supply": 21000000.0,
"quotes": {
"USD": {
"price": 6530.3,
"volume_24h": 4015800000.0,
"market_cap": 111637842469.0,
"percent_change_1h": -0.66,
"percent_change_24h": -2.31,
"percent_change_7d": -14.6
}
},
"last_updated": 1529097276
}
}
})
有关详细信息,请参阅
另见
API支持CORS 要测试使用:
当用户试图使用
$http.get
并获取以下信息时,通常会出现此问题:
XMLHttpRequest无法加载请求的资源上没有“Access Control Allow Origin”标头。因此,不允许访问源“”
然后有人建议使用$http.jsonp
作为解决方案。这仅在API支持JSONP时有效
有关详细信息,请参阅
data
是否应该是一个数组?是的,您可以在这里看到它:几乎就好像json和jsonp是两个不同的东西。@KevinB jsonp是json Padded的首字母缩写。看看interwebs上的讽刺是不是很有趣API有一种方法可以将数据组织成一个数组,你认为这是一种解决方法吗?数组结构很好,但仍然不是JSONP,因为没有添加所需的填充。如果API不支持JSONP,那么就没有任何解决方法可以使$http.JSONP
工作。使用$http。从https
源站获取,或者使用CORS代理。是的,我就是这么想的。谢谢你的洞察力。我也尝试使用$http.get,但使用该方法我只得到了CORS错误:“对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许来源”头。”。请注意,我是从localhost运行这个。当我从像Codepen这样的站点运行完全相同的代码时,它工作得很好。Codepen工作得很好,因为它们的来源是https
。您的本地主机不工作,因为源代码是http
。现代浏览器阻止http
到https
跨源请求。