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响应.

相关文章

IE6是一个非常老旧的网页浏览器,虽然现在很少人再使用它,但...
PHP中的count()函数是用来计算数组或容器中元素的个数。这个...
使用 AJAX(Asynchronous JavaScript and XML)技术可以在不...
Ajax(Asynchronous JavaScript and XML)是一种用于改进网页...
本文将介绍如何通过AJAX下载Excel文件流。通过AJAX,我们可以...
Ajax是一种用于客户端和服务器之间的异步通信技术。通过Ajax...