【问题标题】:Fire on return from form "Submit"从“提交”表格返回时触发
【发布时间】:2017-01-20 07:36:56
【问题描述】:

我希望能够解析从提交帖子返回的值。如果不通过 javascript 手动启动 ajax 调用,我似乎无法找到一种方法

网页代码:

<form id="form1" method="post" action="/formSubmit" >
    <input type="text" name="username">
    <input type="text" name="email">
    <input type="submit" value="Submit">
</form>

nodejs 服务器上的代码:

router.post('/', function(req, res) {
    console.log("HERE: " + req.body.username);
    console.log("HERE: " + req.body.email);
    res.json({ data1: 'Hello', data2: 'World'});
}

编辑 #1:目前这只是将“{ data1: 'Hello', data2: 'World'}” 呈现到浏览器中,但我需要解析它

【问题讨论】:

  • 您的 html 表单 action="/formSubmit" 在您提供的代码中没有路径。更改服务器上的路由。 router.post("/formSubmit", fun...
  • @magreenberg 我的 app.js 中有它: var users = require('./routes/formSubmit'); app.use('/formSubmit', formSubmit);

标签: javascript node.js express handlebars.js


【解决方案1】:

表单提交后你想看到什么?您处理发送 JSON 的 POST 请求的方式。所以你确实需要 AJAX 来让你的结果更漂亮。为了避免使用 AJAX,您只需将响应作为 HTML 文件发送。

当然您也可以将提交的表单数据传递给模板并发送给用户。将您需要的变量传递给您的模板:

res.render('formsubmit', {data1: 'Hello', data2: 'World'}); 

为此,您需要在模板目录中有一个名为formsubmit 的模板文件(加上文件结尾取决于您的视图引擎),它采用给定的变量。 Express 将负责创建一个 HTML 文件。

例如对于 Handlebars,您可以访问视图文件夹中名为 formsubmit.hbs 的模板文件中的变量,例如:

<p>Hello, my name is {{data}} and not {{data2}}.

另请参阅:https://expressjs.com/en/guide/using-template-engines.html

【讨论】:

  • 您能告诉我如何访问模板中的数据吗?
  • 您使用的是哪个模板引擎? Node.js 模块的确切名称是什么?有不同的
  • @Henry 我更新了关于如何将它与 Handlebars 一起使用的答案(正如您在问题中标记的那样。如果有帮助,请考虑接受/支持我的答案:meta.stackexchange.com/questions/23138/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-02
  • 1970-01-01
  • 1970-01-01
  • 2021-07-07
  • 2011-03-24
  • 1970-01-01
  • 2013-06-25
相关资源
最近更新 更多