2014-12-01 27 views
0

我有一个简单的HTML这样的:变量传给Node.js加载

<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中找到答案。

谢谢。

-----编辑------

我的形式,现在看起来是这样的:

<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

将数据发布为基于输入元素的name属性命名的变量,其值由元素值属性定义。 – 2014-12-01 22:08:55

回答

3

使用JavaScript来针对隐藏的输入和提交表单之前设置的值:

HTML

<input type="hidden" name="chat" id="hiddenInput" /> 

JS

var input = document.getElementById('hiddenInput'); 
input.value = testVariable.toString(); 

而且,您的节点服务器上,您需要访问req.body.chat - body p你想要的属性对应于输入元素的name

+0

嗨乔丹,似乎它现在传递的对象,但作为一个字符串,如果我打印接收变量它打印''[[对象对象]“'(包括引号),我用新表格更新了问题 – CJ1 2014-12-01 22:43:31

+0

testVariable.toString() – 2014-12-01 23:53:50

+0

现在正在工作,谢谢! – CJ1 2014-12-02 17:58:00

1

您需要使用输入name属性。而且输入必须是内部的form这样你就可以在节点抓住它:

<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> 

它应该在节点登录"the value string"

+0

但问题是我怎样才能用JavaScript变量 – CJ1 2014-12-01 22:14:15

+0

@ cesar_k13替换硬编码的字符串“值字符串”,你可以做'document.querySelector('input [name =“testVariable”]')。value = somevariable;并且会将该变量的内容传递给将要发布的输入。否则AJAX是你可能需要的... – Sergio 2014-12-01 22:16:33