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时有效

有关详细信息,请参阅


我们能看到完整的json吗?
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
跨源请求。