将变量从JavaScript传递给Node.js

时间:2014-12-01 22:05:58

标签: javascript node.js express

我有一个像这样的简单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"

2 个答案:

答案 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"