【发布时间】:2021-12-26 13:15:15
【问题描述】:
所以基本上,我正在为前端开发者开发这个项目,我想更进一步,让它显示存储的任务以及添加新的任务。
// JSON.data
[
{
"name": "task1",
"todo": "Complete online Javascript course"
},
{
"name": "task2",
"todo": "Jog around the park 3x"
}
]
// Script
getData = () => {
const xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status ==200) {
const myData = JSON.parse(this.responseText)
dataUse(myData)
saveData(myData)
}
}
xhttp.open("GET", "data.json", true);
xhttp.send();
}
dataUse = (object) =>{
object.forEach((datas)=>{
const todo = document.createElement('div')
todos.appendChild(todo)
const input = document.createElement('input')
input.setAttribute('type', 'checkbox')
input.setAttribute('id', datas.name)
input.setAttribute('class', 'checks')
todo.appendChild(input)
const label = document.createElement('label')
label.setAttribute('for', datas.name)
label.setAttribute('class', `${datas.name} tasks`)
todo.appendChild(label)
const span = document.createElement('span')
label.appendChild(span)
const paragraph = document.createElement('p')
paragraph.innerHTML = datas.todo
label.appendChild(paragraph)
})
}
getData()
目前,上面的代码会加载数据,然后继续制作所需的元素并将信息放置在正确的位置。
我现在需要做的是让它自动将一个新对象保存到 JSON 文件中(当输入有一个值时(我想我可以自己计算这部分)),然后像 dataUse 函数一样继续显示它做。 这是我试图做的:
let newData = {
name: "task3",
todo: "Water the plants"
}
const fs = require('fs')
const saveData = (object) =>{
const finished = (error)=>{
if(error){
console.error(error);
return
}
}
object.push(newData)
const jsonData = JSON.stringify(object, null, 2)
fs.writeFile('data.json', jsonData, finished)
}
这似乎不起作用,但是当我尝试推送 newData 而不尝试重写文件和 console.log 时,它确实显示了所有对象,包括新对象。那么我该如何进行这项工作呢?还是有更好的方法来做到这一点?
【问题讨论】:
标签: javascript json xmlhttprequest