正在处理来自挑战 api 的 json

Processing a json from challonge api

我正在尝试在 Challonge Api 的帮助下构建一个 Power Rankings 应用程序,但当我检索 json.[=14= 时,JS 似乎一直向我发送错误消息]

Test Site

$(document).ready(function(){

$.ajax({
        url: 'https://api.challonge.com/v1/tournaments/3j91s6g1/matches.json',
        type: 'GET',
        dataType: "jsonp",
        success: function (data) {
            // FOR TEST PURPOSE
             $.each(data, function(index, element) {
                $('body').append($('<div>', {
                    text: element.name
                }));
            });
        },
        error : function(error){
            console.log(error)
        }
    });

});

有什么想法吗?

我刚刚决定使用 php 并且在检索 JSON

时没有遇到任何问题
<?php 
    $json = file_get_contents('https://<edited_apikey>@api.challonge.com/v1/tournaments/3j91s6g1/participants.json/');
    $var = json_decode($json,true);
    //echo $var[0][participant][name];
    foreach($var as $p)
    {
    echo $p[participant][name]."<br />";
    
    }
    ?>

我正在四处寻找关于挑战赛的资料 API 并且偶然发现了这个问题,我想我会给你一个答案。

您使用 JavaScript 请求时遇到错误的原因是 Challonge 的 API 没有启用 cross-origin 请求。为防止网页使用 Ajax 请求从任何其他网站提取用户数据,网络浏览器会检查其他网站是否可以通过查找 cross-origin [=29 来发送请求=].如果想了解更多,可以查看the Wikipedia article或其他谈论CORS的网站(cross-origin资源共享)。

我要补充的另一件事:您通常不想与其他任何人共享您的 API 密钥,因为它直接绑定到您的帐户。您问题中 URL 的第一部分是您的 username:key,这意味着发生此情况的任何人都可以使用它来修改您的括号等。这实际上可能是 Challonge 不这样做的原因允许 CORS;无论如何,人们不应该从 JavaScript 发送这些请求,因为它需要共享他们的 API 密钥(用户与网页,或网站所有者与用户)。

您还需要小心地将任意文本回显到网页。我不知道 Challonge 的参与者姓名限制,但这可能会导致 cross-site scripting vulnerability.