1.( 我有一个函数,可以根据用户输入成功生成随机单词(如果用户输入为 10,则网站上将显示 10 个随机单词(。有一个 json 服务器,我正在使用 GET 请求获取 api 获得单词,如下所示:
function getRandomWords() {
let words = getServerData('http://localhost:3000/words').then(data => {
const wordsToMemorize = document.querySelector('#words-to-memorize');
document.querySelector("#wordsInput").addEventListener("click", function() {
let temp = wordsToMemorize.value;
generatedArrayELements.innerHTML = "";
for(let i = 0; i < temp; i++) {
let rander = Math.floor(Math.random() * 3000);
generatedArrayELements.innerHTML += data[rander] + "</br>";
}})
});
}
2.( 我想将生成的单词传输到我的 .json 文件中randomwords array
但它不想工作。在那里使用 DOM 也没有意义,我刚刚意识到:
function putServerData() {
let data = getRandomWords();
let fetchOptions = {
method: "POST",
mode: "cors",
cache: "no-cache",
headers: {
'Content-Type': 'application/json'
},
credentials: "same-origin",
body: JSON.stringify(data)
};
return fetch("http://localhost:3000/randomwords", fetchOptions)
.then(resp => resp.json())
.then(json => console.log(json));
}
document.querySelector("#wordsInput").addEventListener("click", function() {
putServerData();
})
3.( 我觉得非常接近我的目标,因为随机单词生成器可以工作,如果我手动将值设置为let data
变量,我也可以将数据 POST 到 .json 文件中,例如let data = ["test"]
.我不知道的是如何将生成的随机单词发送到我的 .json 文件。
4.( 我的 json 文件:
{
"randomwords": [],
"words": [
"a",
"abandon",
"ability",
"able",
"abortion",
"about",
"above",
"abroad",
"absence",
"absolute",
"absolutely",
"absorb",
"abuse",
"academic",
"accept",
"access"...(remaining words...)
}]
4.(我试图遵循文档。也许我需要使用一些timeout
因为首先需要生成随机单词,然后再对它们使用POST request
。我已经为此苦苦挣扎了将近一个星期,找不到解决方案,我几乎阅读了 SO 中的所有相关帖子。每一个帮助将不胜感激。
在我的getRandomWords((中返回一个承诺,其中包含一些timeout
可以是一个可行的解决方案吗?
您无法通过进行fetch
post
调用将日期添加到 json 文件,但是您可以做的是将数据写入 json 文件,您可以使用节点fs
module
来执行此操作。 首先创建一个路由处理程序
const fs = require('fs')
router.post("/savedata", (req, res) => {
const jsondata = req.body
fs.writeFileSync('./path/to/your/json/data', jsondata, err => {
if (err) {
res.send("error saving file")
} else {
res.send("data saved successfully")
}
})
})
然后使用 fetch 调用您在正文中传递数据