2014-02-11 52 views
0

我一直在试图从蒸汽api中提取数据,并没有运气,因为我总是得到上述错误。这里是我使用的代码:跨域jquery ajax(Jsonp):未捕获SyntaxError:意外的令牌:(冒号)

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,我也试过在steamurl之后使用"&callback=?",但无济于事。

+0

你可以共享服务器的响应格式吗 –

+0

我不认为API支持JSONP,只有JSON。 – Barmar

+0

请参见https://developer.valvesoft ware.com/wiki/Steam_Web_API/Feedback#API_Considerations_for_Web_Developers –

回答

6

解决方法是添加jQuery代码将调用的本地代理。您的代理服务器端代码(PHP,Python,Ruby等)将查询转发给Valve,然后将其返回给您的jQuery调用。但是,您必须使用其支持的格式之一(其中JSONP不是其中一种)。

高水平的你会做什么样的看法:

  • 创建一个可以接受的参数jQuery将路过的PHP文件。在这种情况下,它看起来像账户ID,并匹配您想要接收。不通过API密钥,这应该被保存在PHP文件
  • 在PHP中使用存储的API密钥建立你steamurl,和两个传递的值
  • 发行采用这种steamurl和检索到阀服务器调用结果。
  • 返回此响应你的Ajax调用

你的PHP会是这个样子(也应该包括更多的错误检查,因为我只取$_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响应。

+0

谢谢你给我一个我有点失落的游戏计划。 :) – k4kuz0

相关问题