如何自动/有效地实现我的minecraft服务器的banned-players.json到html?

问题描述 投票:0回答:1

我有一个问题,想弄清楚如何将json文件添加到网站,以便它可以自动更新。

我使用它的唯一方法是将代码复制+粘贴到变量本身

function CreateTableFromJSON() {
  var bannedPlayers = [{
      "uuid": "-",
      "name": "foobar",
      "created": "2019-04-01 13:37:52 -0700",
      "source": "-",
      "expires": "forever",
      "reason": "Banned by an operator."
    } //theres more than this
  ]
  var col = [];
  for (var i = 0; i < bannedPlayers.length; i++) {
    for (var key in bannedPlayers[i]) {
      if (col.indexOf(key) === -1) {
        col.push(key);
      }
    }
  }

  var table = document.createElement("table");

  var tr = table.insertRow(-1); // TABLE ROW.

  for (var i = 0; i < col.length; i++) {
    var th = document.createElement("th"); // TABLE HEADER.
    th.innerHTML = col[i];
    tr.appendChild(th);
  }
  for (var i = 0; i < bannedPlayers.length; i++) {

    tr = table.insertRow(-1);

    for (var j = 0; j < col.length; j++) {
      var tabCell = tr.insertCell(-1);
      tabCell.innerHTML = bannedPlayers[i][col[j]];
    }
  }
  var divContainer = document.getElementById("showData");
  divContainer.innerHTML = "";
  divContainer.appendChild(table);
}
<body>
  <input type="button" onclick="CreateTableFromJSON()" value="Create Table From JSON" />
  <p id="showData"></p>
</body>

问题显然是,我不想也不想我的其他运营商想要复制和粘贴我们禁止某人的时间(以及我从互联网上抓取了大部分代码的事实 - 我是一个noob @html)!我试图解决这个问题的另一种方法更难解释,但是要改变整个json文件本身

function load() {
  var mydata = JSON.parse(data);


  var div = document.getElementById('data');

  for (var i = 0; i < mydata.length; i++) {
    div.innerHTML = div.innerHTML + "<p id=" + i + ">" + mydata[i].name + "</p>" + "<br>";
  }
}
<script type="text/javascript" src="abc.json"></script>

<body onload="load()">
  <div id="data">

  </div>
</body>

这是abc.json文件(暂时替换为banned-players.json)

data = '[{"uuid": "redacted", "name": "foobar", "created": "2019-04-01 13:37:52 -0700", "source": "operateor", "expires": "forever", "reason": "Banned by an operator." }]'
// theres more than that bracket

这个问题是它只显示我选择的一列,我不知道如何在表中组织它。

我的问题:有没有一种方法我不能篡改json文件本身,而它希望自动更新我的HTML页面?谢谢!

html json minecraft
1个回答
0
投票

首先,我建议您使用插件来管理将数据存储在数据库中的惩罚(禁止,踢,静音......)。然后,您可以使用例如查询这些信息。 PHP使用例如mysqli

当您不希望/可以使用插件来管理它并且必须从banned-players.json读取信息时,您需要设法从文件中获取信息到网站。

要实现这一点,您必须问自己一个问题:banned-players.json文件是否存储在运行网站的同一台机器上?


如果是这样,您只需要让web服务器访问该文件并使用某些服务器端代码实际读取该文件(您可以使用例如PHP)。

Web服务器主要与名为www-data的用户一起运行。使用chmodchown命令授予用户访问该文件的权限。例如。 chmod 774 banned-players.json将导致您计算机上的每个用户都可以读取该文件,并且只有选定的用户才能写入该文件。

完成此操作后,您可以使用以下方法读取文件的输入。 PHP并在JavaScript代码中打印输出。

您可以使用此代码来读取文件:

<?php
$filePath = "/path/to/file/banned-players.json";
$myfile = fopen($filePath, "r") or die("Unable to open file!");
$data fread($myfile, filesize($filePath));
fclose($myfile);
echo $data;
?>

请注意,在用户浏览器中显示页面之前,PHP代码将在服务器端执行!

使用此,您的Javascript代码可能如下所示:

function CreateTableFromJSON() {
  var bannedPlayers = 
<?php
  $filePath = "/path/to/file/banned-players.json";
  $myfile = fopen($filePath, "r") or die("Unable to open file!");
  $data = fread($myfile, filesize($filePath));
  fclose($myfile);
  str_replace("data = '", "", $data);
  str_replace("'", "", $data);
  echo $data;
?>
  var col = [];
  for (var i = 0; i < bannedPlayers.length; i++) {
    for (var key in bannedPlayers[i]) {
...
...
...

如果文件未存储在同一台计算机上,则需要设置将文件与其他计算机同步,或创建Web服务或任何其他类型的服务,该服务从其他计算机的文件中提供信息。

© www.soinside.com 2019 - 2024. All rights reserved.