4

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

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

我想我有三个选择:

1) 放置一个值为“edit”的隐藏字段,以便我可以正确处理它。这需要做更多的工作,因为我必须处理它,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);

解决方案 #2 是唯一一个在查看 app.js 中的代码时直观且明显的解决方案,并且遵循 CRUD 的标准约定。但是如果由于某种原因没有启用 javascript,他们就不能编辑他们的对象。

4

2 回答 2

11

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>
于 2012-10-07T02:01:58.920 回答
4

对于最近遇到此问题的任何人,这里是对我有用的更新语法。当您阅读本文时可能会有所不同,因此如果这不起作用,只需检查方法覆盖说明。但是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>
于 2017-10-14T16:39:09.360 回答