微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 跨域jquery ajax(Jsonp):未捕获的SyntaxError:意外的令牌:(冒号)

我一直试图从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 =?”蒸汽后,但无济于事.

解决方法:

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

高级别地了解您将要做的事情:

>创建接受jQuery将传递的参数的PHP文件.在这种情况下,它看起来像您想要接收的帐户ID和匹配项.不要传递API密钥,这应该存储在PHP文件
>在PHP中,使用存储的API密钥和两个传递的值构建您的steamurl
>使用此steamurl发出对Valve服务器的调用并检索结果.
>将此响应返回到您的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响应.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐