我有一个像这样的简单HTML:
<html>
<head><title></title></head>
<body>
<script>var testVariable = "Hello"</script>
<form method="post" action="/">
<input type="submit" name="submit" value="Submit">
</form>
</body>
</html>
我的Node.js看起来像这样:
app.post('/', function(req, res) {
Console.log(req.body.testVariable);
});
我需要做的是在提交表单时,testVariable
需要传递给Node.js函数,我正在尝试使用隐藏字段,但我仍然遇到问题,即:
<input type="hidden" name="chat" value="<script>testVariable</script>">
但是你可以想象它将所有脚本作为字符串传递,而不是变量的值。
有人知道怎么做吗?很抱歉,如果这是一个愚蠢的问题,我是JavaScript和Node.js的新手,我无法在Google找到答案。
感谢。
----- ------ EDIT
我的表单现在看起来像这样:
<form method="post" action="/">
<input type="hidden" name="chat" id="hiddenInput" />
<script>
var input = document.getElementById('hiddenInput');
input.value = $('#conversation');
</script>
<input type="submit" name="submit" value="Submit">
</form>
在我的Node.js上,我正在打印这样的对象:
console.log(JSON.stringify(req.body.chat));
并打印"[object Object]"
(包括引号)。
我验证收到的变量是一个字符串:
console.log(typeof req.body.chat); // prints "string"
答案 0 :(得分:3)
使用javascript定位隐藏的输入并在提交表单之前设置值:
<强> HTML 强>
<input type="hidden" name="chat" id="hiddenInput" />
<强> JS 强>
var input = document.getElementById('hiddenInput');
input.value = testVariable.toString();
此外,在您的节点服务器上,您需要访问req.body.chat
- 您想要的body
属性对应于输入元素的name
答案 1 :(得分:1)
您需要使用输入name
属性。并且该输入必须在form
内,因此您可以在Node中捕获它:
<input type="hidden" name="testVariable" value="the value string">
尝试:
<form method="post" action="/">
<input type="hidden" name="testVariable" value="the value string">
<input type="submit" name="submit" value="Submit">
</form>
它应该在Node中记录"the value string"
。