2014-02-11 50 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

相關問題