我一直在尝试从Steam API中提取数据,但没有运气,因为我总是会遇到上述错误。这是我正在使用的代码:
var steamurl = "https://api.steampowered.com/IDOTA2Match_570/GetMatchHistory/V001/?key=[keyomitted]&account_id=38440257&Matches_Requested=10"; function populate_api(){ var json; $.ajax({ 'url': steamurl, 'dataType': "jsonp", 'success': function (data) { alert('success'); json = data; } }); }
我省略了我的API密钥。我看过许多其他帖子,但无法弄清楚问题出在哪里。我试过使用Jsonp,常规json,也试过使用"&callback=?"after steamurl,但无济于事。
"&callback=?"
steamurl
解决方案是添加一个您的jQuery代码将调用的本地代理。您的代理将是服务器端代码(PHP,Python,Ruby等),它将查询转发到Valve,然后将其返回给jQuery调用。但是,您将必须使用其支持的格式之一(JSONP不是其中之一)。
概述您将要做什么:
您的PHP将看起来像这样(并且应该包括更多错误检查,因为我只是将这些$_GET值当作福音:
$_GET
$matches = $_GET['matches']; $acct = $_GET['accountid']; $APIKEY = <YOURKEYHERE>; $steamurl = "https://api.steampowered.com/IDOTA2Match_570/GetMatchHistory/V001/?key=$APIKEY&account_id=$acct&Matches_Requested=$matches&format=json"; $json_object= file_get_contents($steamurl); header('Content-Type: application/json'); echo $json_object;
现在,您可以使用jQuery解析此JSON响应。