【问题标题】:What is preferred way to submit form with express?用快递提交表格的首选方式是什么?
【发布时间】:2012-04-02 02:34:02
【问题描述】:

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

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

PUT     /forums/:forum       ->  update

然而,我看不到提交值的简单方法。

如何提交创作/更新?

Jade 表单和body parser 都可以轻松创建,但是如何提交这个表单呢?请注意 express-resource 定义了 PUT 方法(不是 POST)。

【问题讨论】:

    标签: forms node.js express


    【解决方案1】:

    来自Express guide

    当对表单使用 PUT 等方法时,我们可以利用一个名为 _method 的隐藏输入,它可用于更改 HTTP 方法。为此,我们首先需要 methodOverride 中间件,该中间件应放置在 bodyParser 下方,以便它可以利用包含表单值的 req.body。

    所以:

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

    并以您的形式:

    <input type="hidden" name="_method" value="put">
    

    更新:据我了解来自提问者的新 cmets,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();
    });
    

    【讨论】:

    • 这些 put 映射不是创建为以 ajax 方式处理的吗?
    • 请问?我不明白这个问题。
    • 根据stackoverflow.com/a/7257509/450441 的评论,大多数现代浏览器都支持使用 XMLHttpRequest 进行 PUT。所以它给出了一个想法,也许 ajax 应该是使用 express 提交值的最明显的选择。
    • 哦,当然,如果您的浏览器可以发出PUT,这不是问题。
    • 那个 preventDefault() 需要是第一个语句,否则表单仍然会提交。
    猜你喜欢
    • 2016-01-06
    • 1970-01-01
    • 2014-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-19
    • 2010-09-23
    • 1970-01-01
    相关资源
    最近更新 更多