将 HTML 整数数组传递给 Javascript 函数时出现问题



在将JSP整数数组传递给javascript时遇到问题。 JSP 数组已正确填充。 我可以在我的 JSP 代码中正确呈现 JSP 数组的元素。 但是,当我将 JSP 数组传递给我的 javascript 函数时,我的 JavaScript 代码中未定义值。

JSP 代码片段

....
<! This works correctly !>
<div class="col content-M">
  <p>JSP Array Population Test</p>
    ${daynumbers[2]}
</div>
<! This does not work !>
<div class="col content-L">
  <p>Pass a JSP Integer Array to setDayValues</p>
  <script type="text/javascript">setDayValues(${daynumbers});</script>
  <div id="columnchart_values"></div> 
</div>
....

JavaScript 片段

var a = Array(6);
function setDayValues(values) {
    a[0] = values[0];
    a[1] = values[1];
    a[2] = values[2];
    a[3] = values[3];
    a[4] = values[4];
    a[5] = values[5];     
}
function simpleColumnChart() {
    var data = google.visualization.arrayToDataTable([
         ['Element', 'Density', { role: 'style' }],
         ['1', a[0], 'blue'],
         ['2', a[1], 'blue'],
         ['3', a[2], 'blue'],
         ['4', a[3], 'blue'],
         ['5', a[4], 'blue'],
         ['6', a[5], 'blue']
    ]);
  ....
}

就像我说的,a[x] 在 javascript 中是未定义的。

我认为问题在于你理解 ${daynumbers} 的方式是错误的。 ${daynumbers} 会返回什么? JavaScript 数组? 试试 console.log(${Daynumbers}(,你会注意到你的问题,因为你可以看到 ${daynumbers[0]} 的值,你可能会返回一个 javascript 无法理解的 java 数组对象,所以你可以尝试将 ${daynumbers} 转换为 JSON 字符串, 并解析它。

问题是${daynumbers}导致无效的JavaScript被发送到客户端。

如果要输出整数数组,请使用Arrays.toString

<script type="text/javascript">setDayValues(${Arrays.toString(daynumbers)});</script>

客户端浏览器将看到

<script type="text/javascript">setDayValues([1, 2, 3, 4, 5, 6]);</script>

。(当然,使用您的实际值(,这是使用这些条目定义数组的有效 JavaScript。

那么在setDayNumbers中,就不需要复制它们了,只需使用传递给setDayNumbers的数组:

function setDayNumbers(values) {
    a = values;
}

最新更新