正在处理来自挑战 api 的 json
Processing a json from challonge api
我正在尝试在 Challonge Api 的帮助下构建一个 Power Rankings 应用程序,但当我检索 json.[=14= 时,JS 似乎一直向我发送错误消息]
$(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.
我正在尝试在 Challonge Api 的帮助下构建一个 Power Rankings 应用程序,但当我检索 json.[=14= 时,JS 似乎一直向我发送错误消息]
$(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.