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 现在应该忽略查询字符串
我正在从 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 tofalse
, it will force requested pages not to be cached by the browser. Note: Settingcache
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 现在应该忽略查询字符串