什么是快递提交表格的首选方式?

时间:2012-03-16 14:31:03

标签: forms node.js express

在我的第一个Node项目中使用了Express / Express-resource个库,Jade用于模板化。

根据docs生成默认映射。其中我们可以找到:

PUT     /forums/:forum       ->  update

然而,我没有看到提交价值的简单方法。

如何提交创建/更新?

可以轻松创建Jade表单和body解析器,但是如何提交此表单?请注意,express-resource定义 PUT 方法(不是POST)。

1 个答案:

答案 0 :(得分:6)

来自Express guide

  

当使用带有表单的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();
});