在我的第一个Node项目中使用了Express / Express-resource个库,Jade用于模板化。
根据docs生成默认映射。其中我们可以找到:
PUT /forums/:forum -> update
然而,我没有看到提交价值的简单方法。
如何提交创建/更新?
可以轻松创建Jade表单和body解析器,但是如何提交此表单?请注意,express-resource定义 PUT 方法(不是POST)。
答案 0 :(得分:6)
当使用带有表单的PUT等方法时,我们可以使用名为_method的隐藏输入,它可以用来改变HTTP方法。为此,我们首先需要methodOverride中间件,它应放在bodyParser下面,以便它可以利用它包含表单值的req.body。
所以:
app.use(express.bodyParser());
app.use(express.methodOverride());
以你的形式:
<input type="hidden" name="_method" value="put">
更新:据我了解提问者的新评论,nrph希望使用ajax以PUT
方式提交表单。这是一个使用jQuery的解决方案:
// Use this submit handler for all forms in document
$(document).on('submit', 'form', function(e) {
// Form being submitted
var form = e.currentTarget;
// Issue an ajax request
$.ajax({
url: form.action, // the forms 'action' attribute
type: 'PUT', // use 'PUT' (not supported in all browsers)
// Alt. the 'method' attribute (form.method)
data: $(form).serialize(), // Serialize the form's fields and values
success: function() {},
error: function() {}
});
// Prevent the browser from submitting the form
e.preventDefault();
});