如何在express和node中从html表单发送put请求

时间:2012-10-07 01:39:11

标签: node.js express

我有一个用于编辑对象的表单,我想使用带有node.js的express 3.x来正确处理它。

编辑项目路线:/item/edit显示用于编辑对象的表单。

我想我有三个选择:

1)放置一个隐藏字段,其值为"编辑"所以我可以正确地处理它 这是一个更多的工作,因为我必须在app.post('/item', routes.item.post);处理它,它也将处理新的创作和更新。

2)仅使用jQuery.ajax()put调用提交编辑表单。 这允许我使用app.put('/item', routes.item.put);

3)将发布请求发送到/ item / edit而不是/ item来处理更新/编辑 帖子只会用于/ item / edit更新:app.post('/item/edit', routes.item.edit.post);

在查看app.js中的代码并遵循CRUD的标准约定时,解决方案#2是唯一直观且明显的解决方案。但是如果由于某种原因未启用javascript,则无法编辑其对象。

2 个答案:

答案 0 :(得分:8)

http://www.senchalabs.org/connect/middleware-methodOverride.html

快递:

app.use(express.bodyParser())
app.use(express.methodOverride())

你的html表单:

<form method="POST">
  <input type="hidden" name="_method" value="put">
</form>

答案 1 :(得分:1)

对于刚刚遇到此问题的人来说,更新的语法对我有用。当您阅读本文时可能会有所不同,如果这不起作用,请查看method-override instructions。但是method-override 2.3.10Express 4.13.4一起使用时,以下情况应该有效。

<form method="POST" action="/edit-post/<post.id>?_method=PUT">
   .....
  <button type="submit">Update Post</button>
</form>