如何将带有html文件的响应发送回ejs文件并在ejs Node.js上的iframe中显示

时间:2017-09-21 06:42:47

标签: javascript html node.js httpresponse

我是Node.js中的新手并在服务器上工作。我试图将我的输出文件(html)的响应发送回NodeJS中的ejs。我将在下面详细解释,

我有一个发送HTTP请求的按钮(' POST')来运行下面代码中的ejs中的python文件,

在EJS中,

<div class="form-group" style='margin-bottom:0px;'><div id='Button'><input type='button' class="form-control" value='Request' id="sendButton" onclick="save3()"/></div></div>
<form action="/saveText" method="POST" id="myForm"><input type="hidden" id="metrics_id" ng-repeat="obj in tags" value="{{obj.name}}" name="metrics_name"></form>

<script>
  function save3(){
    console.log(document.getElementsByName("metrics_name")[0].value);
    console.log(document.getElementsByName("metrics_name")[1].value);
    console.log(myForm.getElementsByTagName('input').length);
  }
  $(document).on('click', '#sendButton', function(){
    $('#myForm').submit();
  });
</script>

然后它使用PythonShell调用python脚本在app.js(Node.js)中执行

Node.js的

app.post('/saveText', isLoggedIn, function(req, res){
  var pyshell = new PythonShell('/public/make_bokeh.py');
  pyshell.on('message', function(message){
    console.log(message);
  });
  pyshell.end(function(err){
    if(err){
      throw err;
    }
    console.log("Finished");
    res.sendFile(); ------------------------>I want to send output file back to EJS
  });
});

在make_bokeh.py中,它在make_bokeh.py所在的目录中创建输出html文件。

问题是我想将HTTP响应发送回带有该输出文件的ejs,然后将其放入iframe。

是否有可能,或者有什么想法?

1 个答案:

答案 0 :(得分:1)

愿你能做到:

Node JS

. . .
pyshell.end(function(err){
if(err){
  throw err;
}
console.log("Finished");
var HTMLFileGeneratedByPython = fs.readFileSync(path.join(__dirname, relPath));
  res.render('template.ejs', { htmlFile: HTMLFileGeneratedByPython });
});

EJS

<!-- HTML HEADER -->
<body>
  <%= htmlFile %>
</body>
</html>