全局数组在我的JavaScript程序中保留刷新时的数据
我正在尝试创建一个待办事项列表,其中我要使用表单将新项目添加到列表中。列表工作正常,但当我刷新页面时,已经存储在数组中的数据将被保留。我不想那样 我希望每次刷新时,旧的数据都会丢失,新的项目会被推送到数组中。但要做到这一点,每次我必须杀死并重新启动服务器全局数组在我的JavaScript程序中保留刷新时的数据,javascript,arrays,express,global-variables,backend,Javascript,Arrays,Express,Global Variables,Backend,我正在尝试创建一个待办事项列表,其中我要使用表单将新项目添加到列表中。列表工作正常,但当我刷新页面时,已经存储在数组中的数据将被保留。我不想那样 我希望每次刷新时,旧的数据都会丢失,新的项目会被推送到数组中。但要做到这一点,每次我必须杀死并重新启动服务器 initial list: li1 li2 li3 after item addition: li1 li2 li3 li4 li5 after refresh: (expected) li1 li2 li3 after refresh:
initial list:
li1
li2
li3
after item addition:
li1
li2
li3
li4
li5
after refresh: (expected)
li1
li2
li3
after refresh: (actual o/p)
li1
li2
li3
li4
li5
我的代码:
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");
});
要做到这一点,需要能够区分因用户按下刷新而发出获取请求的浏览器和因任何其他原因发出获取请求的浏览器……而HTTP确实不是为此而设计的 “刷新”是指“提供此资源的最新版本”。这并不意味着资源应该根据请求进行更改(除非资源类似于一个用来显示当前时间的页面……但是那里的更改是由时间更改触发的,而不是刷新本身) 如果要重置数组,请编写一个显式设计用于重置数组的端点,然后向用户提供一个发布到该URL的表单和提交按钮
app.post("/reset",function(req,res){
Item = ["Home List","Shop List","Bucket List"]
res.redirect("/");
});
您是否检查过这是否是由浏览器缓存引起的?另外,对于加利福尼亚州,当你刷新浏览器页面时,旧的数组仍然存在,并且添加了你推送的更新列表?是的。旧数组仍然存在。在惯用JavaScript中,以大写字母开头的变量名保留给构造函数/类。不要使用
Items
作为仅包含数组的变量的名称,请将其命名为Items
。感谢您指出这一点。我改了。