Javascript 使用nodeJS单击获取数组索引/如何删除nodeJS服务器上的留言簿条目
我按照一个教程用nodeJS和ajax构建了一个小留言簿,现在我试图通过添加一些功能来扩展它,比如点击一个按钮就删除一个特定的条目,但我的问题是如何获得我点击的条目的数组索引??我知道我可以在我的JS文件中使用Javascript 使用nodeJS单击获取数组索引/如何删除nodeJS服务器上的留言簿条目,javascript,jquery,node.js,ajax,Javascript,Jquery,Node.js,Ajax,我按照一个教程用nodeJS和ajax构建了一个小留言簿,现在我试图通过添加一些功能来扩展它,比如点击一个按钮就删除一个特定的条目,但我的问题是如何获得我点击的条目的数组索引??我知道我可以在我的JS文件中使用 $('.entrygrid .entry .del').click(function() { console.log($(this).parent().parent().index()); }); 但是我如何在服务器文件中获得这个值呢?这样我就可以删除JSON文件中的[arra
$('.entrygrid .entry .del').click(function() {
console.log($(this).parent().parent().index());
});
但是我如何在服务器文件中获得这个值呢?这样我就可以删除JSON文件中的[array index I clicked]项了
这是我到目前为止得到的代码,它都在工作,但我想删除条目。(我知道我的代码看起来很糟糕,这是我第一次用node.js做任何事情)
app.js
'use strict';
let idk = require('./idk.js'); // lol
let express = require('express');
let bodyParser = require('body-parser');
let GuestbookEntry = require('./src/GuestbookEntry.js'); // guestbook requirement
let fs = require('fs');
fs.readFile('./data.json', 'utf-8', (err, data) => {
if (err) throw err;
let d = JSON.parse(data);
let entries = [];
for(let entry of d) {
entries.push(new GuestbookEntry(entry.author, entry.title, entry.content, entry.date));
}
// Start Server
let app = express();
app.set('view engine', 'ejs');
app.set('views', './views');
app.use(bodyParser.urlencoded({extended: true}));
app.use(express.static('./public'));
let text;
if (entries.length < 2) {
text = 'entry';
} else {
text = 'entries';
}
app.get('/index', (req, res) => {
res.render('index', {
entries: entries,
text: text
});
});
app.post('/guestbook/new', (req, res) => {
let tzoffset = (new Date()).getTimezoneOffset() * 60000; //offset in milliseconds
let localISOTime = (new Date(Date.now() - tzoffset)).toISOString().slice(0, -1);
let currentDate = localISOTime.slice(0, 10).replace(/-/g, "/");
let currentTime = localISOTime.slice(11, 19);
let date = currentDate + ", " + currentTime;
let content = req.body.content;
let title = req.body.title;
let author = req.body.author;
let newEntry = new GuestbookEntry(author, title, content, date);
entries.push(newEntry);
// write data into the file data json
fs.writeFileSync('./data.json', JSON.stringify(entries));
res.redirect('/index');
if (entries.length < 2) {
text = 'entry';
} else {
text = 'entries';
}
});
app.post('/guestbook/del', (req, res) => {
//delete the entry please
});
app.listen(1337, () => {
console.log('oof');
});
});
"use strict";
class GuestbookEntry {
constructor(author, title, content, date) {
this.author = author;
this.title = title;
this.content = content;
this.date = date;
}
}
module.exports = GuestbookEntry;
<html>
<head>
<title>index</title>
<link rel="stylesheet" href="/css/app.css">
</head>
<body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script src="/js/index.js"></script>
<div class="all">
<div class="main">
<h1>node.js ,,,</h1>
<a href="http://localhost:1337/gay">gay</a>
<div class="entrycount"><span></span></div>
<div class="entrygrid">
<% for(let entry of entries) { %>
<div class="entry">
<strong><%= entry.author %></strong>
<h3><%= entry.title %></h3>
<p><%= entry.content %></p>
<p><%= entry.date %></p>
<form method="POST" action="/guestbook/del">
<button class="del" type="submit"></button>
</form>
</div>
<% } %>
</div>
<form class="new-entry" method="POST" action="/guestbook/new">
<input type="text" name="author" placeholder="Author">
<input type="text" name="title" placeholder="Title">
<textarea name="content" placeholder="Your text here!" rows="5" cols="20" ></textarea>
<button type="submit">Send!</button>
</form>
</div>
</div>
</body>
</html>
$(document).ready(function(){
let currentDate;
let currentTime;
let tzoffset;
let localISOTime;
let text;
if ($('.entrygrid .entry').length < 2) {
text = "entry";
} else {
text = "entries";
}
$('.entrycount span').text($('.entrygrid .entry').length + " " + text);
/*$(".new-entry").submit(function(e) {
e.preventDefault();
tzoffset = (new Date()).getTimezoneOffset() * 60000; //offset in milliseconds
localISOTime = (new Date(Date.now() - tzoffset)).toISOString().slice(0, -1);
currentDate = localISOTime.slice(0, 10).replace(/-/g, "/");
currentTime = localISOTime.slice(11, 19);
let author = $('input[name="author"]').val();
let title = $('input[name="title"]').val();
let content = $('textarea[name="content"]').val();
let date = currentDate + ", " + currentTime;
$.ajax({
url: '/guestbook/new',
method: "POST",
data: {
"author": author,
"title": title,
"content": content,
"date": date,
},
success: function(data) {
let div = $.parseHTML("<div></div>");
$(div).html(data);
let newEntries = $(".entry", div);
$(".entrygrid .entry").remove();
newEntries.each(function(i, newEntry) {
$(".entrygrid").append(newEntry);
});
$('.entrycount span').text($('.entrygrid .entry').length);
//console.log(data);
}
});
//alert(author + " " + title + " " + content);
});*/
});
GuestbookEntry.js
'use strict';
let idk = require('./idk.js'); // lol
let express = require('express');
let bodyParser = require('body-parser');
let GuestbookEntry = require('./src/GuestbookEntry.js'); // guestbook requirement
let fs = require('fs');
fs.readFile('./data.json', 'utf-8', (err, data) => {
if (err) throw err;
let d = JSON.parse(data);
let entries = [];
for(let entry of d) {
entries.push(new GuestbookEntry(entry.author, entry.title, entry.content, entry.date));
}
// Start Server
let app = express();
app.set('view engine', 'ejs');
app.set('views', './views');
app.use(bodyParser.urlencoded({extended: true}));
app.use(express.static('./public'));
let text;
if (entries.length < 2) {
text = 'entry';
} else {
text = 'entries';
}
app.get('/index', (req, res) => {
res.render('index', {
entries: entries,
text: text
});
});
app.post('/guestbook/new', (req, res) => {
let tzoffset = (new Date()).getTimezoneOffset() * 60000; //offset in milliseconds
let localISOTime = (new Date(Date.now() - tzoffset)).toISOString().slice(0, -1);
let currentDate = localISOTime.slice(0, 10).replace(/-/g, "/");
let currentTime = localISOTime.slice(11, 19);
let date = currentDate + ", " + currentTime;
let content = req.body.content;
let title = req.body.title;
let author = req.body.author;
let newEntry = new GuestbookEntry(author, title, content, date);
entries.push(newEntry);
// write data into the file data json
fs.writeFileSync('./data.json', JSON.stringify(entries));
res.redirect('/index');
if (entries.length < 2) {
text = 'entry';
} else {
text = 'entries';
}
});
app.post('/guestbook/del', (req, res) => {
//delete the entry please
});
app.listen(1337, () => {
console.log('oof');
});
});
"use strict";
class GuestbookEntry {
constructor(author, title, content, date) {
this.author = author;
this.title = title;
this.content = content;
this.date = date;
}
}
module.exports = GuestbookEntry;
<html>
<head>
<title>index</title>
<link rel="stylesheet" href="/css/app.css">
</head>
<body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script src="/js/index.js"></script>
<div class="all">
<div class="main">
<h1>node.js ,,,</h1>
<a href="http://localhost:1337/gay">gay</a>
<div class="entrycount"><span></span></div>
<div class="entrygrid">
<% for(let entry of entries) { %>
<div class="entry">
<strong><%= entry.author %></strong>
<h3><%= entry.title %></h3>
<p><%= entry.content %></p>
<p><%= entry.date %></p>
<form method="POST" action="/guestbook/del">
<button class="del" type="submit"></button>
</form>
</div>
<% } %>
</div>
<form class="new-entry" method="POST" action="/guestbook/new">
<input type="text" name="author" placeholder="Author">
<input type="text" name="title" placeholder="Title">
<textarea name="content" placeholder="Your text here!" rows="5" cols="20" ></textarea>
<button type="submit">Send!</button>
</form>
</div>
</div>
</body>
</html>
$(document).ready(function(){
let currentDate;
let currentTime;
let tzoffset;
let localISOTime;
let text;
if ($('.entrygrid .entry').length < 2) {
text = "entry";
} else {
text = "entries";
}
$('.entrycount span').text($('.entrygrid .entry').length + " " + text);
/*$(".new-entry").submit(function(e) {
e.preventDefault();
tzoffset = (new Date()).getTimezoneOffset() * 60000; //offset in milliseconds
localISOTime = (new Date(Date.now() - tzoffset)).toISOString().slice(0, -1);
currentDate = localISOTime.slice(0, 10).replace(/-/g, "/");
currentTime = localISOTime.slice(11, 19);
let author = $('input[name="author"]').val();
let title = $('input[name="title"]').val();
let content = $('textarea[name="content"]').val();
let date = currentDate + ", " + currentTime;
$.ajax({
url: '/guestbook/new',
method: "POST",
data: {
"author": author,
"title": title,
"content": content,
"date": date,
},
success: function(data) {
let div = $.parseHTML("<div></div>");
$(div).html(data);
let newEntries = $(".entry", div);
$(".entrygrid .entry").remove();
newEntries.each(function(i, newEntry) {
$(".entrygrid").append(newEntry);
});
$('.entrycount span').text($('.entrygrid .entry').length);
//console.log(data);
}
});
//alert(author + " " + title + " " + content);
});*/
});
index.ejs
'use strict';
let idk = require('./idk.js'); // lol
let express = require('express');
let bodyParser = require('body-parser');
let GuestbookEntry = require('./src/GuestbookEntry.js'); // guestbook requirement
let fs = require('fs');
fs.readFile('./data.json', 'utf-8', (err, data) => {
if (err) throw err;
let d = JSON.parse(data);
let entries = [];
for(let entry of d) {
entries.push(new GuestbookEntry(entry.author, entry.title, entry.content, entry.date));
}
// Start Server
let app = express();
app.set('view engine', 'ejs');
app.set('views', './views');
app.use(bodyParser.urlencoded({extended: true}));
app.use(express.static('./public'));
let text;
if (entries.length < 2) {
text = 'entry';
} else {
text = 'entries';
}
app.get('/index', (req, res) => {
res.render('index', {
entries: entries,
text: text
});
});
app.post('/guestbook/new', (req, res) => {
let tzoffset = (new Date()).getTimezoneOffset() * 60000; //offset in milliseconds
let localISOTime = (new Date(Date.now() - tzoffset)).toISOString().slice(0, -1);
let currentDate = localISOTime.slice(0, 10).replace(/-/g, "/");
let currentTime = localISOTime.slice(11, 19);
let date = currentDate + ", " + currentTime;
let content = req.body.content;
let title = req.body.title;
let author = req.body.author;
let newEntry = new GuestbookEntry(author, title, content, date);
entries.push(newEntry);
// write data into the file data json
fs.writeFileSync('./data.json', JSON.stringify(entries));
res.redirect('/index');
if (entries.length < 2) {
text = 'entry';
} else {
text = 'entries';
}
});
app.post('/guestbook/del', (req, res) => {
//delete the entry please
});
app.listen(1337, () => {
console.log('oof');
});
});
"use strict";
class GuestbookEntry {
constructor(author, title, content, date) {
this.author = author;
this.title = title;
this.content = content;
this.date = date;
}
}
module.exports = GuestbookEntry;
<html>
<head>
<title>index</title>
<link rel="stylesheet" href="/css/app.css">
</head>
<body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script src="/js/index.js"></script>
<div class="all">
<div class="main">
<h1>node.js ,,,</h1>
<a href="http://localhost:1337/gay">gay</a>
<div class="entrycount"><span></span></div>
<div class="entrygrid">
<% for(let entry of entries) { %>
<div class="entry">
<strong><%= entry.author %></strong>
<h3><%= entry.title %></h3>
<p><%= entry.content %></p>
<p><%= entry.date %></p>
<form method="POST" action="/guestbook/del">
<button class="del" type="submit"></button>
</form>
</div>
<% } %>
</div>
<form class="new-entry" method="POST" action="/guestbook/new">
<input type="text" name="author" placeholder="Author">
<input type="text" name="title" placeholder="Title">
<textarea name="content" placeholder="Your text here!" rows="5" cols="20" ></textarea>
<button type="submit">Send!</button>
</form>
</div>
</div>
</body>
</html>
$(document).ready(function(){
let currentDate;
let currentTime;
let tzoffset;
let localISOTime;
let text;
if ($('.entrygrid .entry').length < 2) {
text = "entry";
} else {
text = "entries";
}
$('.entrycount span').text($('.entrygrid .entry').length + " " + text);
/*$(".new-entry").submit(function(e) {
e.preventDefault();
tzoffset = (new Date()).getTimezoneOffset() * 60000; //offset in milliseconds
localISOTime = (new Date(Date.now() - tzoffset)).toISOString().slice(0, -1);
currentDate = localISOTime.slice(0, 10).replace(/-/g, "/");
currentTime = localISOTime.slice(11, 19);
let author = $('input[name="author"]').val();
let title = $('input[name="title"]').val();
let content = $('textarea[name="content"]').val();
let date = currentDate + ", " + currentTime;
$.ajax({
url: '/guestbook/new',
method: "POST",
data: {
"author": author,
"title": title,
"content": content,
"date": date,
},
success: function(data) {
let div = $.parseHTML("<div></div>");
$(div).html(data);
let newEntries = $(".entry", div);
$(".entrygrid .entry").remove();
newEntries.each(function(i, newEntry) {
$(".entrygrid").append(newEntry);
});
$('.entrycount span').text($('.entrygrid .entry').length);
//console.log(data);
}
});
//alert(author + " " + title + " " + content);
});*/
});
指数
node.js,,,
发送!
index.js
'use strict';
let idk = require('./idk.js'); // lol
let express = require('express');
let bodyParser = require('body-parser');
let GuestbookEntry = require('./src/GuestbookEntry.js'); // guestbook requirement
let fs = require('fs');
fs.readFile('./data.json', 'utf-8', (err, data) => {
if (err) throw err;
let d = JSON.parse(data);
let entries = [];
for(let entry of d) {
entries.push(new GuestbookEntry(entry.author, entry.title, entry.content, entry.date));
}
// Start Server
let app = express();
app.set('view engine', 'ejs');
app.set('views', './views');
app.use(bodyParser.urlencoded({extended: true}));
app.use(express.static('./public'));
let text;
if (entries.length < 2) {
text = 'entry';
} else {
text = 'entries';
}
app.get('/index', (req, res) => {
res.render('index', {
entries: entries,
text: text
});
});
app.post('/guestbook/new', (req, res) => {
let tzoffset = (new Date()).getTimezoneOffset() * 60000; //offset in milliseconds
let localISOTime = (new Date(Date.now() - tzoffset)).toISOString().slice(0, -1);
let currentDate = localISOTime.slice(0, 10).replace(/-/g, "/");
let currentTime = localISOTime.slice(11, 19);
let date = currentDate + ", " + currentTime;
let content = req.body.content;
let title = req.body.title;
let author = req.body.author;
let newEntry = new GuestbookEntry(author, title, content, date);
entries.push(newEntry);
// write data into the file data json
fs.writeFileSync('./data.json', JSON.stringify(entries));
res.redirect('/index');
if (entries.length < 2) {
text = 'entry';
} else {
text = 'entries';
}
});
app.post('/guestbook/del', (req, res) => {
//delete the entry please
});
app.listen(1337, () => {
console.log('oof');
});
});
"use strict";
class GuestbookEntry {
constructor(author, title, content, date) {
this.author = author;
this.title = title;
this.content = content;
this.date = date;
}
}
module.exports = GuestbookEntry;
<html>
<head>
<title>index</title>
<link rel="stylesheet" href="/css/app.css">
</head>
<body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script src="/js/index.js"></script>
<div class="all">
<div class="main">
<h1>node.js ,,,</h1>
<a href="http://localhost:1337/gay">gay</a>
<div class="entrycount"><span></span></div>
<div class="entrygrid">
<% for(let entry of entries) { %>
<div class="entry">
<strong><%= entry.author %></strong>
<h3><%= entry.title %></h3>
<p><%= entry.content %></p>
<p><%= entry.date %></p>
<form method="POST" action="/guestbook/del">
<button class="del" type="submit"></button>
</form>
</div>
<% } %>
</div>
<form class="new-entry" method="POST" action="/guestbook/new">
<input type="text" name="author" placeholder="Author">
<input type="text" name="title" placeholder="Title">
<textarea name="content" placeholder="Your text here!" rows="5" cols="20" ></textarea>
<button type="submit">Send!</button>
</form>
</div>
</div>
</body>
</html>
$(document).ready(function(){
let currentDate;
let currentTime;
let tzoffset;
let localISOTime;
let text;
if ($('.entrygrid .entry').length < 2) {
text = "entry";
} else {
text = "entries";
}
$('.entrycount span').text($('.entrygrid .entry').length + " " + text);
/*$(".new-entry").submit(function(e) {
e.preventDefault();
tzoffset = (new Date()).getTimezoneOffset() * 60000; //offset in milliseconds
localISOTime = (new Date(Date.now() - tzoffset)).toISOString().slice(0, -1);
currentDate = localISOTime.slice(0, 10).replace(/-/g, "/");
currentTime = localISOTime.slice(11, 19);
let author = $('input[name="author"]').val();
let title = $('input[name="title"]').val();
let content = $('textarea[name="content"]').val();
let date = currentDate + ", " + currentTime;
$.ajax({
url: '/guestbook/new',
method: "POST",
data: {
"author": author,
"title": title,
"content": content,
"date": date,
},
success: function(data) {
let div = $.parseHTML("<div></div>");
$(div).html(data);
let newEntries = $(".entry", div);
$(".entrygrid .entry").remove();
newEntries.each(function(i, newEntry) {
$(".entrygrid").append(newEntry);
});
$('.entrycount span').text($('.entrygrid .entry').length);
//console.log(data);
}
});
//alert(author + " " + title + " " + content);
});*/
});
$(文档).ready(函数(){
让我们看看日期;
让我们来看看时间;
让我们来抵消;
让我们慢慢来;
让文字;
if($('.entrygrid.entry')。长度<2){
text=“输入”;
}否则{
text=“条目”;
}
$('.entrycount span').text($('.entrygrid.entry').length+“”+text);
/*$(“.new entry”).submit(函数(e){
e、 预防默认值();
tzoffset=(新日期()).getTimezoneOffset()*60000;//偏移量(毫秒)
localISOTime=(新日期(Date.now()-tzoffset)).toISOString().slice(0,-1);
currentDate=localISOTime.slice(0,10)。替换(/-/g,“/”);
currentTime=LocalSoTime.slice(11,19);
让author=$('input[name=“author”]).val();
让title=$('input[name=“title”]').val();
让content=$('textarea[name=“content”]”)。val();
设日期=当前日期+“,”+当前时间;
$.ajax({
url:“/guestbook/new”,
方法:“张贴”,
数据:{
“作者”:作者,
“头衔”:头衔,
“内容”:内容,
“日期”:日期,
},
成功:功能(数据){
让div=$.parseHTML(“”);
$(div).html(数据);
设newEntries=$(“.entry”,div);
$(“.entrygrid.entry”).remove();
每个函数(i,newEntry){
$(“.entrygrid”).append(newEntry);
});
$('.entrycount span').text($('.entrygrid.entry').length);
//控制台日志(数据);
}
});
//警告(作者+标题+内容);
});*/
});
在循环浏览JSON文件内容时,需要获取索引。
然后,您可以使用它为Guestbook对象中的索引创建一个新键,命名元素或类似内容。
我会这样做:
d.forEach((element, index) => {
//Do Something with the index
});