【发布时间】:2019-04-04 06:30:54
【问题描述】:
我正在创建一个 localhost 服务器并读取文件路径,然后读取 json 文件
我在 url 中传递文件路径。
像这样:http://localhost:3000/C:/Users/Desktop/generated.json
服务器端代码
var createError = require("http-errors");
var express = require("express");
var path = require("path");
var PORT = 3000;
var fs = require("fs");
var app = express();
app.set("views", path.join(__dirname, "views"));
app.set("view engine", "ejs");
const url = require("url");
app.use(function(req, res) {
let k = req.originalUrl;
file = k.slice(1);
fs.exists(file, function(exists) {
fs.readFile(file, "utf-8", (error, data) => {
if (error) throw error;
let jsonData = [];
jsonData.push(data);
console.log(jsonData);//just displaying in console
console.log(data);
res.render("./main.ejs", { jsonData: jsonData });
});
});
});
app.use(function(req, res, next) {
next(createError(404));
});
app.listen(PORT, function() {
console.log(`app is listening at port ${PORT}`);
});
这是使用 ejs 的客户端代码
<!DOCTYPE html>
<html>
<head contentType="application/JSON">
</head>
<body>
<form>
<h1>
<%=JSON.stringify(JSON.parse(jsonData)) %>
</h1>
<br />
<button name="Click to edit" type="submit" style="height:100px ;width:200px ;font-size:20px">
Click to edit
</button>
</form>
</body>
</body>
</html>
显示的输出是这样的: the link to the output how it is shown
所以我无法以正确的方式显示它。
知道我该怎么做吗?
即使我想对 json 文件进行更改并在目标位置反映更改
我还没有为编辑按钮添加任何功能。
【问题讨论】:
-
<%= JSON.stringify(JSON.parse(jsonData)) %>完全没有意义。您将jsonData(它是一个字符串)解析为一个对象,然后立即将其再次转换回字符串。你得到的正是你输入的内容。<%= jsonData %>将产生完全相同的结果,而无需所有额外的处理。 -
无论如何你是什么意思以“适当”的方式显示它......我们不知道你对“适当”的定义是什么。请举例说明您想要的输出。无论如何,如果您希望它是可编辑的,您可能希望将其放入 textarea,然后正确设置您的表单,以便它将数据再次发送回服务器,以便您将其保存回磁盘。
标签: javascript node.js json ajax express