javascript - 使用 fetch 发布数据后自动刷新

标签 javascript json fetch

我尝试使用 fetch 方法使待办事项列表变得简单;所有请求都可以正常查看结果,如果我尝试添加函数 updateData 以在 add 或 deleteTask 中 promise ,则必须刷新网站,整个列表会增加一倍。我可以询问一些有关如何使其与自动刷新一起使用的提示吗? 我使用 JSON 服务器来存储数据。

   function updateData() {
            var ul = document.querySelector('.listOfTasks');

            fetch('http://localhost:3000/tasks')
                .then((res) => res.json())
                .then((data) => {
                    let tasks = '';
                    data.forEach(function (task) {
                        tasks +=
                            `<li class="taskElement" id=${task.id}><input type="checkbox" class="checkbox">
                                <span class="task"> ${task.name}</span>
                                <img class="deleteBtn" id=${task.id} src="../assets/trash.png"> </img>
                             </li>`

                    })
                    ul.insertAdjacentHTML('afterBegin', tasks)
                })
        }



function addTask(e) {
        e.preventDefault();
        var taskName = document.querySelector('.taskName').value;
        var ul = document.querySelector('.listOfTasks');
        if (taskName === "") {
            alert("Please write something")
        } else {
            fetch('http://localhost:3000/tasks', {
                method: 'POST',
                headers: {
                    'Accept': 'application/json',
                    'Content-type': 'application/json'
                },
                body: JSON.stringify({name: taskName})
            })
                .then((res) => res.json())
        }
    }

function deleteTask(e) {
        e.preventDefault();

        if (e.target.className === 'deleteBtn') {

            fetch('http://localhost:3000/tasks/' + e.target.id, {
                method: 'DELETE',
            })
                .then((res) => res.json())
                .then((data) => console.log(data))

        }
    }

最佳答案

如果你想运行updateData()要刷新您的列表,那么您需要替换 <ul> 的内容而不是添加到其中。

因此只需更改

ul.insertAdjacentHTML('afterBegin', tasks);

ul.innerHTML = tasks;

参见https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML用于文档。

关于javascript - 使用 fetch 发布数据后自动刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52587216/

相关文章:

java - 断言错误 : No value for JSON Path in JUnit test

javascript - DatetimePicker 不显示时间选择器

javascript - jQuery fadeToggle 从隐藏而不是可见开始

javascript - 使用 Math.random() 和 .css 的 jQuery/JS 随机图像定位?

java - 在java中查询一个JSONObject

Javascript:如何从 API 获取特定数据?

javascript - 将 Div 的全部内容加载到新 Div 时出现问题

java - 来自 JSON 文件的 Java 中的键值对

PHP yield 与 PDO 获取?

parsing - 如何使用 fetch API 和 XLSX 库加载和解析 .xlsx 文件