Express:POST不发送数据-未定义var



在一个视图中,我试图从另一个视图获取用户通过表单发送的数据。

这是表单的视图(为了避免混淆,我省略了一些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=";形式";,否则就行不通了。

最新更新