对蒸汽市场的GET请求出错

时间:2015-06-04 02:45:27

标签: angularjs node.js express get jsonp

我正在尝试执行GET请求以获取蒸汽市场上单个商品的商品价格信息。

这是我正在使用的确切angularJS脚本:

<script>
var app = angular.module('csgo', []);
app.controller('MainCtrl', function($scope, $http) {
    $http.jsonp("http://steamcommunity.com/market/priceoverview/?currency=3&appid=730&market_hash_name=StatTrak%E2%84%A2%20P250%20%7C%20Steel%20Disruption%20%28Factory%20New%29").success(function(response) { 
        $scope.values = response;
        console.log(response); 
    });
});
</script>

当我尝试在浏览器中执行此操作时,我得到:

Uncaught SyntaxError: Unexpected token : ?currency=3&appid=730&market_hash_name=StatTrak™ P250 | Steel Disruption (Factory New):1

在我的Chrome浏览器控制台中。然后,我单击错误消息中的链接(?currency = 3&amp; appid = 730&amp; market_hash_name = StatTrak™P250 | Steel Disruption(Factory New):1)

它让我走了一条线:

{"success":true,"lowest_price":"1,09&#8364; ","volume":"348","median_price":"1,01&#8364; "}

所以我实际上得到了信息,但是它给出了一个错误,并用红色强调了JSON响应。有人知道这个问题吗?

我正在使用nodejs,express和angular。

编辑:

我尝试了其他网址:https://angularjs.org/greet.php?callback=JSON_CALLBACK&name=Super%20Hero

它适用于此网址。所以我不确定为什么我试图请求的原始URL无效。有什么想法?

1 个答案:

答案 0 :(得分:1)

当您使用JSONP时,应调用JSON_CALLBACK()来处理结果。您可以参考Angular JSONP document了解详情,还提供了live demo JSON_CALLBACK的使用方式。

所以在你的情况下,你应该像下面这样打电话

$http.jsonp("http://steamcommunity.com/market/priceoverview/?callback=JSON_CALLBACK&currency=3&appid=730&market_hash_name=StatTrak%E2%84%A2%20P250%20%7C%20Steel%20Disruption%20%28Factory%20New%29").success(function(response) { 
    $scope.values = response;
    console.log(response); 
});

如果服务器正确处理JSON_CALLBACK,则所有错误都应该消失。

更新

我只是看看Steam Community

  

缺乏对JSONP协议和API的支持   可接受的使用策略要求不要共享API密钥。   如上所述,在Javascript文件中使用此API密钥(即   由客户端完整下载)将违反该政策   Valve提供了

他们不支持JSONP,他们也不支持CORS。看起来你可以从Angular访问steam api。