我正在尝试执行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€ ","volume":"348","median_price":"1,01€ "}
所以我实际上得到了信息,但是它给出了一个错误,并用红色强调了JSON响应。有人知道这个问题吗?
我正在使用nodejs,express和angular。
编辑:
我尝试了其他网址:https://angularjs.org/greet.php?callback=JSON_CALLBACK&name=Super%20Hero
它适用于此网址。所以我不确定为什么我试图请求的原始URL无效。有什么想法?
答案 0 :(得分:1)
当您使用JSONP
时,应调用JSON_CALLBACK()
来处理结果。您可以参考Angular JSONP document了解详情,还提供了live demo JSON_CALLBACK
的使用方式。
所以在你的情况下,你应该像下面这样打电话
$http.jsonp("http://steamcommunity.com/market/priceoverview/?callback=JSON_CALLBACK¤cy=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。