我是 javascript 的初学者,我不知道如何用 java 编程,并且试图理解 servlet 真的很难。我所了解的是如何创建一个 jsp 页面,该页面将复杂的查询提交到我的 Postgres 9.2 数据库并将结果行返回到 html,然后我将其显示在客户端的 iframe 中。我想要做的是在同一个jsp页面中获取相同的结果行,并将它们发送到客户端javascript上的一个数组,这样我就可以在flot中绘制数据图表。如果我能让它工作,也许这会让我免于尝试理解 java 和 serlet 的麻烦,并且会使我的绘图更容易,因为图表会准确地绘制每次查询更改时查询返回的内容。我不想更多地查询数据库。我'从 JSP 列表中填充 JavaScript 数组 我可以将结果行打印到数组中,并让客户端的 javascript 可以使用该数组。但是我无法让客户端看到数组变量,而且我确定我缺少一些东西并且不理解一些基本的东西。
我使用“c:forEach”和“c:out”从查询结果中打印出的行到 html 中如下所示:
"Jan" 1 1426.50 472.65
"Feb" 2 1449.00 482.10
"Mar" 3 1459.50 485.55
"Apr" 4 1470.00 489.00
"May" 5 1480.50 492.45
"Jun" 6 1491.00 495.90
"Jul" 7 1489.50 493.35
"Aug" 8 1512.00 502.80
"Sep" 9 1510.50 500.25
"Oct" 10 1533.00 509.70
"Nov" 11 1543.50 513.15
"Dec" 12 1542.00 510.60
根据我在该链接中的理解,我应该能够使数组看起来像这样:
var withdraw_v = [[ 1.0, 1426.50],[ 2.0, 1449.00],[ 3.0, 1459.50],[ 4.0, 1470.00],[ 5.0, 1480.50],[ 6.0, 1491.00],[ 7.0, 1489.50],[ 8.0, 1512.00],[ 9.0, 1510.50],[ 10.0, 1533.00],[ 11.0, 1543.50],[ 12.0, 1542.00]];
在我的 jsp 文件中使用此代码:
<sql:query var="rs" dataSource="jdbc/medford">
My sql query goes here
</sql:query>
<script type="text/javascript">
var withdraw_v = [
<c:forEach var="row" items="${rs.rows}" varStatus="status">
[ <c:out value="${row.Month_num}"/>, <c:out value="${row.Average_Withdrawals}"/>]
<c:if test="${not status.last}">,</c:if>
</c:forEach>
];
</script>
在我的 html/javascript 文件中,我尝试使用数组绘制我的数据:
$.plot("#plot", withdraw_v);
但它返回withdraw_v 变量未定义。我确定我错了。谁能指出什么可以使这项工作?我已经尝试阅读有关 google-gson 的信息,但我也不理解它,或者在这种情况下它是否会对我有所帮助。