我从API系统(来自http://mcping.net/)获取Minecraft服务器的详细信息,然后想要使用"在线玩家"和#34;最大玩家"显示一个值,并计算一个百分比,用于填充"宽度"一个酒吧。
出于某种原因,在Enjin上使用它时,我只能收集" Online"玩家数量,其余的都没有收集。我是否对代码做错了,或者这是恩金(该网站正在托管)的问题?如果是这样我怎么能解决这个问题呢?
此代码可在http://www.minevival.com/portal上直播。每个栏都会读取"在线玩家",进度条的宽度应该是服务器充满程度的百分比。
以下是代码:
function MainCheck() {
$.getJSON("http://mcping.net/api/72.20.45.4:25577/online,max", function(json){
var online = json.online;
var max = json.max;
var percentage = Math.round((online/max)*100).toFixed(0);
if(online !== undefined) {
$(".main-sr-only").html(online);
$("#main-progress-bar").css("width", percentage + "%");
} else {
$(".main-sr-only").html("...");
}
setTimeout(MainCheck, 4000);
});
}
答案 0 :(得分:3)
我是API的策展人。我已经解决了这个问题,正在努力将其推送到我们所有的服务器上。同时,您可以使用正斜杠格式化请求,如以下示例所示
https://mcping.net/api/72.20.45.4:25577/online,max/
编辑:现在推送更新,API现在应该忽略查询字符串
答案 1 :(得分:1)
问题是请求的实际URL包含时间戳查询字符串参数,该参数被服务器误解为“max”字段的一部分。
请参阅the ajax method documentation,其中.getJSON()
是简写,其中说明:
缓存(默认:
true, false for dataType 'script' and 'jsonp'
)
类型:布尔
如果设置为false
,则会强制请求的页面不被浏览器缓存。 注意:将cache
设置为false只能在HEAD和GET请求中正常使用。它的工作原理是将“_ = {timestamp}”附加到GET参数。其他类型的请求不需要该参数,但在IE8中,当对已经由GET请求的URL进行POST时,该参数除外。
我建议您切换到.ajax()
并指定cache: false
。