为了账号安全,请及时绑定邮箱和手机立即绑定

全局数组在我的 JavaScript 程序中保留刷新数据

全局数组在我的 JavaScript 程序中保留刷新数据

小怪兽爱吃肉 2022-10-13 15:33:09
我正在尝试制作一个待办事项列表,我想在其中使用表单将新项目添加到列表中。该列表工作正常,但是当我刷新页面时,已经存储在数组中的数据被保留。我不想要那个。我希望在每次刷新时,旧数据都会丢失,新项目会被推送到数组中。但是每次我必须杀死并重新启动服务器时都要这样做。initial list:li1li2li3after item addition:li1li2li3li4li5after refresh: (expected)li1li2li3after refresh: (actual o/p) li1li2li3li4li5我的代码:const express = require("express");const bodyParser = require("body-parser");const app = express();var Item = ["Home List","Shop List","Bucket List"];app.use(bodyParser.urlencoded({extended:true}));app.set("view engine","ejs");var options = {    weekday:"long",    day:"numeric",    month:"long"};app.get("/", function (req, res) {  var today = new Date();  var currentDay = today.toLocaleDateString("en-US",options);  res.render("lists",{      day: currentDay,      newListItem : Item });});app.post("/",function(req,res){    Item.push(req.body.newItem);    res.redirect("/");});app.listen(3000, function () {  console.log("Server on port 3000");});
查看完整描述

1 回答

?
GCT1015

TA贡献1827条经验 获得超4个赞

要做到这一点,需要能够区分/由于用户按下刷新而发出 GET 请求的浏览器和由于/任何其他原因发出 GET 请求的浏览器……而 HTTP确实不是为此而设计的。


“刷新”的意思是“给我这个资源的最新版本”。这并不意味着资源应该响应请求而更改(除非资源类似于旨在显示当前时间的页面……但那里的更改是由时间更改而不是刷新本身触发的)。


如果你想重置数组,然后写一个明确设计的端点来重置它,然后为用户提供一个表单和提交按钮,该按钮发布到该 URL。


app.post("/reset",function(req,res){

    Item = ["Home List","Shop List","Bucket List"]

    res.redirect("/");

});


查看完整回答
反对 回复 2022-10-13
  • 1 回答
  • 0 关注
  • 73 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信