Javascript 如何在节点环境中使用HTML标记中的变量?

Javascript 如何在节点环境中使用HTML标记中的变量?,javascript,html,node.js,Javascript,Html,Node.js,这不是我的代码。我的问题是,像“+result+”这样的东西如何显示在html标记中,以及在post响应中输入文本框的值中,它如何有效?。。。 另外,另一方面,为什么当我执行response.write(form),然后执行response.end()作为response.end(form)的替换时,代码会停止工作。我是node的新成员,所以请安静下来 // Load the http module to create an http server. var http = req

这不是我的代码。我的问题是,像“+result+”这样的东西如何显示在html标记中,以及在post响应中输入文本框的值中,它如何有效?。。。 另外,另一方面,为什么当我执行response.write(form),然后执行response.end()作为response.end(form)的替换时,代码会停止工作。我是node的新成员,所以请安静下来

    // Load the http module to create an http server.
    var http = require('http'); 

    // Create a function to handle every HTTP request
    function handler(req, res){

  var form = '';

  if(req.method == "GET"){ 

    form = '<!doctype html> \
    <html lang="en"> \
    <head> \
    <meta charset="UTF-8">  \
    <title>Form Calculator Add Example</title> \
    </head> \
    <body> \
  <form name="myForm" action="/" method="post">\
      <input type="text" name="A"> + \
      <input type="text" name="B"> = \
      <span id="result"></span> \
      <br> \
      <input type="submit" value="Submit"> \
     </form> \
     </body> \
    </html>';

  //respond
  res.setHeader('Content-Type', 'text/html');
  res.writeHead(200);
  res.end(form);

  } else if(req.method == 'POST'){

    //read form data
    req.on('data', function(chunk) {

      //grab form data as string
      var formdata = chunk.toString();
    console.log(formdata);
      //grab A and B values
    console.log(formdata.split("&")[0]);
      var a = eval(formdata.split("&")[0]);
    console.log(a);
      var b = eval(formdata.split("&")[1]);

      var result = calc(a,b);

      //console.log(chunk.toString());
      //console.log(a);
      //console.log(b);
      //console.log(result);

      //fill in the result and form values
    form = '<!doctype html> \
    <html lang="en"> \
    <head> \
    <meta charset="UTF-8">  \
    <title>Form Calculator Add Example</title> \
    </head> \
    <body> \
   <form name="myForm" action="/" method="post">\
      <input type="text" name="A" value="'+a+'"> + \
      <input type="text" name="B" value="'+b+'"> = \
      <span id="result">'+result+'</span> \
      <br> \
      <input type="submit" value="Submit"> \
    </form> \
    </body> \
    </html>';

    //respond
    res.setHeader('Content-Type', 'text/html');
    res.writeHead(200);
    res.end(form);

    });

    } else {
    res.writeHead(200);
    res.end();
    };

    };

    //js functions running only in Node.JS
    function calc(a,b){
    return  Number(a)+Number(b);;
    }

    http.createServer(handler).listen(8080, function(err){
  if(err){
    console.log('Error starting http server');
  } else {
    console.log("Server running at http://127.0.0.1:8080/");          
    };
    });
//加载http模块以创建http服务器。
var http=require('http');
//创建一个函数来处理每个HTTP请求
函数处理程序(req、res){
var形式=“”;
如果(req.method==“GET”){
形成\
\
\
\
表单计算器添加示例\
\
\
\
+ \
= \
\

\ \ \ \ '; //回应 res.setHeader('Content-Type','text/html'); 书面记录(200); 目的(形式); }else if(req.method==“POST”){ //读取表单数据 请求on('data',函数(块){ //将表单数据作为字符串抓取 var formdata=chunk.toString(); console.log(formdata); //获取A和B值 console.log(formdata.split(“&”)[0]); var a=eval(formdata.split(“&”)[0]); 控制台日志(a); var b=评估(formdata.split(“&”)[1]); var结果=计算值(a,b); //log(chunk.toString()); //控制台日志(a); //控制台日志(b); //控制台日志(结果); //填写结果和表单值 形成\ \ \ \ 表单计算器添加示例\ \ \ \ + \ = \ “+结果+”\
\ \ \ \ '; //回应 res.setHeader('Content-Type','text/html'); 书面记录(200); 目的(形式); }); }否则{ 书面记录(200); res.end(); }; }; //仅在Node.js中运行的js函数 函数计算(a,b){ 返回编号(a)+编号(b);; } createServer(handler).listen(8080,函数(err){ 如果(错误){ log('启动http服务器时出错'); }否则{ log(“正在运行的服务器http://127.0.0.1:8080/"); }; });
Node.js不了解HTML。您看到的是普通的()字符串文字,这些文字当然可以与变量中的字符串连接起来?你有例外吗?你能在浏览器中看到的输出是什么?我说的是,比如这部分:“+result+”。这叫什么?至于“停止工作”,我的意思是服务器不再连接,因此出于某种原因它不会加载页面。您需要确保在将任何文本插入HTML之前将其编码为HTML,否则您将面临一些字符问题和XSS攻击。同样,代码在处理正确编码的提交数据方面也非常糟糕。