我有一个问题,想弄清楚如何将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页面?谢谢!
首先,我建议您使用插件来管理将数据存储在数据库中的惩罚(禁止,踢,静音......)。然后,您可以使用例如查询这些信息。 PHP
使用例如mysqli
。
当您不希望/可以使用插件来管理它并且必须从banned-players.json
读取信息时,您需要设法从文件中获取信息到网站。
要实现这一点,您必须问自己一个问题:banned-players.json
文件是否存储在运行网站的同一台机器上?
如果是这样,您只需要让web服务器访问该文件并使用某些服务器端代码实际读取该文件(您可以使用例如PHP
)。
Web服务器主要与名为www-data
的用户一起运行。使用chmod
或chown
命令授予用户访问该文件的权限。例如。 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服务或任何其他类型的服务,该服务从其他计算机的文件中提供信息。