我有一个运行nodejs和express的web应用程序。我使用ejs作为视图引擎。
这是我的ejs文件:
<!DICTYPE html>
<html lang="en">
<head>
<title>Nodejs Mongodb App</title>
<style>
</style>
</head>
<ul>
<li><span>Title: </span> <div><%= movie.title %></div> </li>
<li><span>From Year: </span> <div><%= movie.fromYear %></div> </li>
<li><span>To Year: </span> <div><%= movie.toYear %></div> </li>
<li><span>Genre: </span> <div><%= movie.genre %></div> </li>
<li><span>Director: </span> <div><%= movie.genre %></div> </li>
<li><span>Creator: </span> <div><%= movie.genre %></div> </li>
<li><span>Number of Episodes: </span> <div><%= movie.genre %></div> </li>
<li><span>Number of Seasons: </span> <div><%= movie.genre %></div> </li>
<li><span>Poster URL: </span> <div><%= movie.genre %></div> </li>
<li><span>Plot: </span> <div><%= movie.plot %></div> </li>
</ul>
<button><a href="/delete" style="text-decoration: none">Delete Record</a></button>
<body>
<script>
console.log(movie);
</script>
</body>
</html>
这是我的路线:
app.post('/find', function (req, res, next) {
var collection = db.collection('movies');
collection.find({title: req.body.title}).toArray(function (err, result) {
console.log(result[0]);
res.render('movie.ejs', {movie: result[0]});
});
});
表单调用/ find:
<form action="/find" method="post">
<input type="text" placeholder="title to search" name="title">
<button type="submit">Search</button>
</form>
我希望能够获得从路径发送的“电影”并将其存储在客户端的对象中。我怎么能这样做? 目标:我想将电影ID发送回服务器,点击删除按钮将其删除。
更新1
我按标题搜索电影,但当我想删除它时,我想使用ID。所以我需要的是解析响应体。但是怎么做?
答案 0 :(得分:0)
尝试将其作为JSON字符串传递给客户端,然后将变量解析为JSON。
服务器
res.render('movie.ejs', {
movie: result[0],
moviejson: JSON.stringify(result[0])
});
客户端
<script>
var movie_object = JSON.parse('<%= moviejson %>');
console.log(movie_object);
</script>
答案 1 :(得分:0)
POST
,它应该是GET
,用于在浏览器中显示您的电影数据。 <form>
。 JS
POST
将电影ID返回到处理删除的应用中的POST路线(假设您要使用AJAX,否则只需将方法设置为POST即可您的表单并正确设置操作URL)。 DELETE
请求将id传递给服务器(这是更加安静的方式)来处理删除。答案 2 :(得分:0)
你在这里可以做的是:
1)根据电影标题制作可用于渲染页面的路线。
2)创建一个实际作为rest api端点的新路由(用于获取电影详细信息),您可以向该端点发送请求并获取电影的详细信息。
您的节点代码:
app.get('/movie-render-page/:title', function (req, res, next) {
res.render('movie.ejs');
});
app.get('/movie/:title', function(req,res,next){
var collection = db.collection('movies');
collection.find({title: req.params.title}).toArray(function (err, result) {
res.status.send(result);
});
});
您的HTML代码:
<script>
//call '/movie/:title' and you can than bind data to html and use it
</script>