当前位置: 首页 > 面试题库 >

跨域jquery ajax(Jsonp):未捕获语法错误:意外令牌:(冒号)

曾晨
2023-03-14
问题内容

我一直在尝试从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,但无济于事。


问题答案:

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

概述您将要做什么:

  • 创建接受参数的jQuery将传递的PHP文件。在这种情况下,它看起来像是帐户ID,并且与您要接收的匹配项相同。不要传递API密钥,该密钥应存储在PHP文件中
  • 在PHP中,steamurl使用存储的API密钥和两个传递的值构建您的
  • 使用此命令向Valve服务器发出呼叫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响应。



 类似资料:
  • 我正在尝试使用React创建一个简单的网站,但由于某些原因,它只显示一个空白页面。 显示在控制台日志上的错误是未捕获的语法错误:意外令牌 非常感谢。 HTML: 主JS: Navbar: 身体

  • 问题内容: 因此,我尝试使用以下jQuery代码向Stack Exchange API发出请求: 但是,当我在FireFox或Chrome中打开机器上的文件并发出请求时,出现此错误: 我不知道发生了什么事。我知道Stack Exchange API使用Gzip压缩其响应,这会引起任何麻烦吗? 问题答案: 您必须设置一个非常规参数才能使SO API正常工作。而不是常规的,您需要传递一个参数。 此外,

  • 问题内容: Chrome尝试在页面上加载脚本文件时收到主题错误。它说它在javascript文件的最后一行。我似乎找不到任何问题。firefox中没有错误,脚本可以按预期工作。仅使用表单验证 问题答案: 该资源末尾有某种伪造的字符。尝试删除最后一行并将其添加回去。 我无法弄清楚那里到底是什么… _编辑_我认为这是一个零宽度的空间,Unicode200B。似乎很奇怪,我当然不能肯定这不是Stacko

  • 我试图发出一个Ajax调用来访问一个web服务并获得响应。但是获取未捕获的语法错误:意外的标记 Request标头如下: 请求URL:http://10.10.1.5:8089/axis2/services/cmtlpmservice/getAllMonitors?callback=回调 接受:/ 接受-编码:gzip,通货紧缩,sdch 接受-语言:en-US,en; q=0.8 授权:基本YW

  • 问题内容: 我在MooTools脚本中运行AJAX调用,在Firefox中运行正常,但是在Chrome中出现错误,我无法确定原因。注释掉代码以确定错误代码在什么地方不会产生任何结果,我认为这可能与返回JSON有关。在控制台中检查,我看到返回的JSON是这样的: 我没有看到任何问题,为什么会发生此错误? 问题答案: 我刚刚解决了这个问题。导致标准Request调用出现问题的原因是,这是我改用的代码:

  • 应用程序。js公司 在执行上述代码时,我得到以下错误。 当我将鼠标悬停在线上方时,会出现这个错误 在我的VS代码中。 当我使用node运行代码时,即在上。我在终端中收到以下错误: 我做错了什么?我希望最后的obj的值是{1:,2:,3:}