我有一个用于编辑对象的表单,我想使用带有node.js的express 3.x来正确处理它
编辑项目路径:/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);
在查看app.js中的代码并遵循CRUD的标准约定时,解决方案#2是唯一直观且明显的解决方案.但是如果由于某种原因未启用javascript,则无法编辑其对象.
http://www.senchalabs.org/connect/middleware-methodOverride.html
表达:
app.use(express.bodyParser())
app.use(express.methodOverride())
Run Code Online (Sandbox Code Playgroud)
你的HTML表格:
<form method="POST">
<input type="hidden" name="_method" value="put">
</form>
Run Code Online (Sandbox Code Playgroud)
对于最近遇到此问题的任何人,这里是对我有用的更新语法。当您阅读本文时,情况可能会有所不同,因此如果这不起作用,只需检查方法覆盖说明。但method-override 2.3.10与Express 4.13.4以下内容一起使用应该可以。
<form method="POST" action="/edit-post/<post.id>?_method=PUT">
.....
<button type="submit">Update Post</button>
</form>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6376 次 |
| 最近记录: |