我正在做一个使用Spring的项目。我正在尝试从数据库中获取一组数据,值将显示在文本框中,但我没有给我提供字符串,而是不断遇到NaN (而不是A数字)。以下是部分源代码:
$( "#dialogFormSalesOrder" ).dialog({
autoOpen: false,
height: 300,
width: 600,
modal: true,
buttons: {
"Pick": function() {
//var bValid = true;
//allFields.removeClass( "ui-state-error" );
$(idSalesOrder).val($("#rdbSalesOrder:checked").val());
//window.location.replace("managedelivery.htm");
<%
Connection connection = null;
String driverName = "com.mysql.jdbc.Driver";
Class.forName(driverName);
String serverName = "localhost:3306";
String mydatabase = "versedb";
String url = "jdbc:mysql://" + serverName + "/" + mydatabase; // a JDBC url
String username = "root";
String password = "";
connection = DriverManager.getConnection(url, username,password);
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("Select idProduct, quantity from vrs_tsodetail where idSO='SO101'");
while(rs.next())
{%>
$("#warehouse tbody" + "").append(
"<tr>" +
'<td><input id="idProduct" name="idProduct" value="' + <% String s = rs.getString(1).toString(); %> + '" /></td>' +
'<td><input id="idQuantity" name="idQuantity" value="' + <% s = rs.getString(2); %> + '" /></td>' +
'<td><input id="idUnit" name="idUnit" value="cccccc" /></td>' + "</tr>"
);
<%}%>
$( this ).dialog("close");
},
Cancel: function() {
$( this ).dialog( "close" );
}
},
close: function() {
//allFields.val( "" ).removeClass( "ui-state-error" );
}发布于 2011-10-13 00:33:32
下面是从你的代码中摘录的相关性:
$("#warehouse tbody" + "").append(
"<tr>" +
'<td><input id="idProduct" name="idProduct" value="' + <% String s = rs.getString(1).toString(); %> + '" /></td>' +
'<td><input id="idQuantity" name="idQuantity" value="' + <% s = rs.getString(2); %> + '" /></td>' +
'<td><input id="idUnit" name="idUnit" value="cccccc" /></td>' + "</tr>"
);这里有两个问题(这段代码通常存在more serious problems,但它们实际上不会影响功能):
要解决问题1,您需要使用<%= %>,而不是将它们分配给<% %>中的字符串,然后完全忽略它。
$("#warehouse tbody" + "").append(
"<tr>" +
'<td><input id="idProduct" name="idProduct" value="' + <%= rs.getString(1) %> + '" /></td>' +
'<td><input id="idQuantity" name="idQuantity" value="' + <%= rs.getString(2) %> + '" /></td>' +
'<td><input id="idUnit" name="idUnit" value="cccccc" /></td>' + "</tr>"
);要解决问题2,您需要删除JavaScript /JSP打印值上的那些Java字符串连接。您应该将Java/JSP看作是一个HTML/JS代码生成器。否则,它们将被视为现有JavaScript变量的名称。假设第一列返回"foo",第二列返回"bar",这只会在生成的JS代码中结束,如下所示(在浏览器中右键单击页面,自己查看源代码):
$("#warehouse tbody" + "").append(
"<tr>" +
'<td><input id="idProduct" name="idProduct" value="' + foo + '" /></td>' +
'<td><input id="idQuantity" name="idQuantity" value="' + bar + '" /></td>' +
'<td><input id="idUnit" name="idUnit" value="cccccc" /></td>' + "</tr>"
);但是你没有在JS代码中的任何地方定义这些变量,对吧?他们是undefined。您需要将其内联到JS代码中:
$("#warehouse tbody" + "").append(
"<tr>" +
'<td><input id="idProduct" name="idProduct" value="<%= rs.getString(1) %>" /></td>' +
'<td><input id="idQuantity" name="idQuantity" value="<%= rs.getString(2) %>" /></td>' +
'<td><input id="idUnit" name="idUnit" value="cccccc" /></td>' + "</tr>"
);这样,它就会以如下所示的有效JS代码结束:
$("#warehouse tbody" + "").append(
"<tr>" +
'<td><input id="idProduct" name="idProduct" value="foo" /></td>' +
'<td><input id="idQuantity" name="idQuantity" value="bar" /></td>' +
'<td><input id="idUnit" name="idUnit" value="cccccc" /></td>' + "</tr>"
);发布于 2011-10-13 00:21:53
<% String s = rs.getString(1).toString(); %>不输出任何内容。它只是一个script-let (代码块)。
要将某些内容输出到页面,您需要执行以下操作
<%= rs.getString(1).toString() %>注意等号("=")。这会将该块转换为out.print(...)语句。
顺便说一句,我希望这只是你在问题中粘贴的测试代码。JSP中那么多的逻辑(特别是打开数据库连接)并不是很好……
https://stackoverflow.com/questions/7738631
复制相似问题