Minecraft JSON API 值到百分比,然后到宽度

Minecraft JSON API Value to Percentage, then to Width

我正在从 API 系统(来自 http://mcping.net/)获取 Minecraft 服务器的详细信息,然后想使用 "online players" 和 "max players" 显示值,并计算一个百分比,该百分比将用于填充柱的 "width"。

由于某些原因,在恩金上使用这个时,我只能收集到"Online"个玩家,其余的没有收集到。我的代码有什么问题吗,或者这是 Enjin(网站托管在哪个网站上)的问题?如果是这样,我该如何解决这个问题?

可以在 http://www.minevival.com/portal 上实时查看此代码。每个条将显示 "online players",进度条的宽度应为该服务器已满的百分比。

代码如下:

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);
}); 
}

问题是请求的实际 URL 包含一个时间戳查询字符串参数,它被服务器误解为 'max' 字段的一部分。

请参阅 the ajax method documentation,其中 .getJSON() 是一个 shorthand,它指出:

cache (default: true, false for dataType 'script' and 'jsonp')
Type: Boolean
If set to false, it will force requested pages not to be cached by the browser. Note: Setting cache to false will only work correctly with HEAD and GET requests. It works by appending "_={timestamp}" to the GET parameters. The parameter is not needed for other types of requests, except in IE8 when a POST is made to a URL that has already been requested by a GET.


我建议您切换到 .ajax() 并指定 cache: false

我是API的策展人。我已经解决了这个问题,并正在努力将其推送到我们所有的服务器。同时,您可以按照以下示例格式化以正斜杠结尾的请求

https://mcping.net/api/72.20.45.4:25577/online,max/

编辑:现在推送更新,API 现在应该忽略查询字符串