【问题标题】:How to pass back values from Node JS to Html using EJS如何使用 EJS 将值从 Node JS 传回 Html
【发布时间】:2016-11-09 08:34:12
【问题描述】:

我正在尝试使用我的HTML 表单将POST 一些值转换为node JS 方法。此后,我需要将返回结果从NODE JS 发回并显示在HTML 页面中。

我还使用EJS 将值发送回表单。但是,结果并没有显示出来。

基本上,在用户单击 HTML 表单上的提交按钮后,值应该被传递给 Node Js 处理并将结果 Successfailed 发送回 HTML 文档将显示。

我的代码如下:

HTML 代码:

          <form id="form-register" action="http://localhost:8089/ttt""  method="post" enctype="multipart/form-data">

            <input type="logintext" value="" name="nam" class="nameC" id="mc" > 



             <input type="submit" name="subscribe" id="mc-submit-number">

             <label  >REEEEE <%= titles %></label>

          </form>

节点 JS 代码:

app.post('/ttt', function (req,res){

loginProvider.signUp(params, function(err, data) {
    if (err) {

      res.render('index',{title: 'HOME',titles:err.stack
      });
      res.send('WHATTT');
    }
    else   {
      console.log('Result ' + data);           // successful response
      res.render('index',{title: 'HOME',titles:'SUCCESS'
      });
      res.end('xzxzxzxzxzx');
    }  

});

}

【问题讨论】:

  • 尝试添加body-parser,就像提到的here
  • 任何具体错误?...您是否检查过浏览器控制台/调试器的错误以及为什么需要 send() 和 end() ..响应已经发送...
  • 已经尝试添加 body-parser。不工作。 Chrome 开发者工具没有报错
  • 但是,我在节点 js 上看到一个错误,上面写着 Error: Can't set headers after they are sent.

标签: html node.js ejs


【解决方案1】:

您可以(或者说必须)使用 AJAX。

然后您可以通过 post 请求手动将表单参数发送到您的 Node 服务器,并返回带有错误或成功消息的响应对象。

【讨论】:

    【解决方案2】:

    您的代码不起作用的原因是因为您已经加载了 HTML 页面的 DOM,并且当您发出该请求时,EJS 工作的唯一方法是重新加载页面,因为 EJS 只是通过您的文件和字符串替换

    我最好的解决方案是对您的“/ttt”进行正常的 AJAX 调用,并让 Node.js 执行“res.send("SUCCESS");'在您的 html 中,您可以将该标签或文档页面的任何部分设置为“SUCCESS”

    使用 JQuery

    $.post("/ttt", function(data, status){
       $("#yourLabel").text(data);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-26
      • 2015-05-18
      • 2021-03-13
      • 1970-01-01
      • 1970-01-01
      • 2020-04-22
      • 2016-05-21
      相关资源
      最近更新 更多