我有一个javascript函数(get_deviceprint())返回UI数据,如ip,resolution,device等。我需要将它作为表单的一部分返回给servlet。我知道该功能有效,因为console.log(get_deviceprint());
正确地在Web控制台中显示信息。
所以问题是将其作为字符串传递回服务器。我试过了
<input type="hidden" name="devicePrint" value="<script type="text/javascript"> get_deviceprint()</script>"/>
但返回<script type=
。
我也试过"return get_deviceprint()"
但是字面上会返回"return get_deviceprint()
。
那么我应该把它作为值?
谢谢!
答案 0 :(得分:6)
您似乎对html的基本部分和编程语言感到困惑:上下文。 html是由标签构成的。标签可能包含可能具有值的属性。
以树状形式:
tag
| attribute = value
| attribute
tag
| attribute = value
tag
tag
| attribute
...
或更具体地说:
<input type="password" hidden />
<img src="goat.png" />
<div>Blah</div>
当浏览器(和你)浏览一个标签并尝试理解它时,它需要某些字符。它知道<
开始标记,>
结束标记,<
标记名称后,等等。翻阅一些文本并提取意义被称为&#34;解析&#34;,你遵循的规则被称为&#34;语法&#34;。
在上面的示例中,浏览器会看到<input type="password" hidden />
,并可以将其细分为以下内容:
<input type="password" hidden />
^-------------^ ^----^
attr=value attr
^------------------------------^
tag
html语法不允许您在属性的值中指定标记。它只是将它视为常规值。
<input type="password" value="<div>blah</div>" />
^-------------^ ^---------------------^
attr=value attr=value
^-----------------------------------------------^
tag
当你考虑它时,它会更有意义:一个值成为标签意味着什么? value="<div>blah</div>"
做什么?你怎么理解它?
所以我们解决了我们的问题:html是静态的,但你想动态地改变它。输入javascript和DOM(文档对象模型):
var input = magically_get_the_input_element();
input.value = get_deviceprint();
DOM是将html解析为可以使用javascript与之交互的对象的结果。这意味着您可以操作页面,这正是您想要的。这是一个很大的话题,我不会努力在这里介绍它,但这里有一些指向你可以学习javascript和DOM的地方: