2012-03-30 45 views
0

我写simulate.jsp下面的代码,以获得一定的字符串“simulationInfos”从服务器:通过Struts 2的属性的JavaScript

<s:property id="simulationInfos" value="simulationInfos" /><br/> 

当已经返回simulate.jsp,我可以看到,存在字符串simulationInfos。

我的问题是:如何将simulationsInfos传递给java脚本?

我试过如下:

<script type="text/javascript"> 
var data=document.getElementById("simulationInfos").value; 
console.log("data is: ", data); 

And with jQuery: 
var data=$("#simulationInfos").val(); 
</script> 

,我得到在Firebug以下错误:遗漏的类型错误:不能为空

的读取属性“值”我怎样才能通过一些支柱2变量的JavaScript ?

+0

是什么生成为HTML?这是重要的部分。 – 2012-03-30 20:43:13

+0

是的,这个属性在身体 – 2012-03-30 21:01:46

回答

2

首先,您应该看看JSP生成的HTML代码。它可以解释为什么你不能检索价值。然后,也许你会看到你需要一些额外的HTML代码。例如:

<span id="simulationInfos"><s:property value="simulationInfos" /></span> 

而且在你的脚本:

alert("data is: " + simulationInfos.innerHTML); 

如果你看一看到属性标记doc,你可以看到,没有任何“ID”参数。

版本:JS更正。

+0

这工作: var data =''; console.log(data); 谢谢大家的参与 – 2012-03-30 21:42:29

+0

关键是属性标签没有产生你期待的html。事实上,我敢打赌,没有任何HTML是由财产标签生产,所以你需要你改变你的方法;-) – jddsantaella 2012-03-30 21:47:51

+0

我只是说:var data =““;如果字符串中有引号,则属性标记的属性也会对其进行编码。 – Quaternion 2012-03-30 23:12:16

1

它看起来像你的id是simulationInfos,但你正在寻找你的js代码中的simulateInfos。由于您的getElementById没有返回任何内容,因此(null)返回类型没有值。

另外,在console.log中,使用+连接字符串,而不是逗号。

+0

我复制它错了她,现在我已经纠正它 – 2012-03-30 21:00:48

+0

在萤火虫控制台,当你输入document.getElementById(“simulationInfos”)时,你会得到什么? – 2012-03-30 21:08:45

+0

我得到null为console.log(document.getElementById(“simulationInfos”)) – 2012-03-30 21:22:56

0

如果您不希望显示的属性值使用s:隐藏的标签是这样的:

<s:hidden id="simulationInfos" value="%{simulationInfos}" name="simulationInfos"/> 

<script type="text/javascript"> 
var data=$("simulationInfos").value; 
console.log("data is: ", data); 
</script>