在一个视图中,我试图从另一个视图获取用户通过表单发送的数据。
这是表单的视图(为了避免混淆,我省略了一些EJS内容(:
<form action="/renderer" method="POST" id="sc-form">
<label for="model">Choose a model:</label>
<select name="model" id="model">
<% data.forEach(function(dat) { %>
<option value="<%= dat %>"> <%= dat %> </option>
<% }); %>
</select>
<input type="submit" value="Render the model!" />
</form>
如您所见,用户从下拉列表中进行选择,然后将数据张贴在/renderer
上。
因此,让我们在routes.js
:上处理这个POST请求
app.post('/renderer', function(req, res) {
var myModel = req.body.model;
res.render('renderer.ejs', {data: myModel});
});
非常基本的是,我们得到表单发送的数据,并将其作为参数发送到renderer.ejs
。
最后,让我们获取/renderer.ejs
上的数据(这在<script>
标签内(:
var modelName = <%- JSON.stringify(data) %>;
我得到这个错误:
data is not defined
但为什么呢?Data是路由器作为参数发送到视图的变量的名称。
这是我尝试将POST数据显示在另一个视图上的第三天。如果有人能帮上忙,我会非常感激。
我终于找到了这个。表单必须包含role=";形式";,否则就行不通了。