Javascript 如何在节点环境中使用HTML标记中的变量?
这不是我的代码。我的问题是,像“+result+”这样的东西如何显示在html标记中,以及在post响应中输入文本框的值中,它如何有效?。。。 另外,另一方面,为什么当我执行response.write(form),然后执行response.end()作为response.end(form)的替换时,代码会停止工作。我是node的新成员,所以请安静下来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
// 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攻击。同样,代码在处理正确编码的提交数据方面也非常糟糕。