【问题标题】:How do I pass data from hbs (html) to axios post request?如何将数据从 hbs (html) 传递到 axios 发布请求?
【发布时间】:2019-09-02 18:25:31
【问题描述】:

对 nodejs 和 express 非常陌生。

当按下“提交”按钮时,我想将作为电子邮件的用户输入数据发送到 axios.post 请求的数据。 我检查了 axios 请求中的硬编码数据工作正常。

data_email.hbs

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css">
    <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
</head>
<body>
    <div>
        <div>
            <nav class="navbar navbar-inverse" role="navigation" style="padding-left:130px;">
                <ul class="nav navbar-nav">
                    <li><a href="/home">Home</a></li>
                    <li><a href="/about">About us</a></li>
                    <li class="active"><a href="/data_email">Data by Email<span class="sr-only">(current)</span></a></li>    
                </ul>
            </nav>
        </div>

        <div class="container">
            <h3>Employee Data Search</h3>
            <label for="email">Enter the employee's cloud-spartan.com email</label></br>
            <input type="email" id="email" size="30">
            <input type="submit" value="search">
            <div class ="employee-data">
                ({data})
            </div>
        </div><!-- container -->
    </div>
</body>
</html>    

server.js

app.get("/data_email", function(req,res){
  queries = req.query;
  if(queries){
    axios.post(url_post,
      post_data, //get the data (email) from data_email.hbs
      post_config, 
      {params: queries}
    ).then(function (response){
      json_result_post = response['data'];
      content = json_result_post['body-json'];
      //console.log(content);
      data_table = JSON.stringify(content, null, 2);
      res.render("data_email", {data:data_table});
    }).catch(function (error){
      console.log(error);
    });
  }
  else {
    console.log("???");
  }
}); 

【问题讨论】:

    标签: html node.js express handlebars.js axios


    【解决方案1】:

    您的html 中应该有formsubmit 按钮。

    <div class="container">
      <form action="/data_email" method="POST">
        <input type="text" id="email" value="">
        <input type="submit" value="Submit">
      </form>
    </div>
    

    您的服务器应该监听POST 方法而不是GET。您还需要body-parser 来解析传入的x-www-form-urlencoded 请求正文。然后可以通过req.body

    获得表单输入
    const bodyparser = require('body-parser')
    
    app.use(bodyParser.urlencoded({ extended: false }));
    
    app.post("/data_email", function(req,res) {
      console.log(req.body)
      // contains input, example req.body.email
    

    更新:

    您可以拥有具有相同 api 名称但不同 http methods 的端点。因此,您可以执行以下操作来提供表单

    app.get("/data_email", function(req,res){
      res.render("data_email", {data:data_table});
    }
    

    【讨论】:

    • 评论不用于扩展讨论;这个对话是moved to chat
    • @naga-elixir-jar,感谢您的评论!现在可以使用了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    • 1970-01-01
    • 2021-11-02
    • 2023-04-10
    • 2021-12-29
    • 2020-02-02
    • 2021-08-11
    相关资源
    最近更新 更多