首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结果集继续提供NaN (而不是A数字)

结果集继续提供NaN (而不是A数字)
EN

Stack Overflow用户
提问于 2011-10-12 18:27:10
回答 2查看 375关注 0票数 0

我正在做一个使用Spring的项目。我正在尝试从数据库中获取一组数据,值将显示在文本框中,但我没有给我提供字符串,而是不断遇到NaN (而不是A数字)。以下是部分源代码:

代码语言:javascript
复制
$( "#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" );

                    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-13 00:33:32

下面是从你的代码中摘录的相关性:

代码语言:javascript
复制
$("#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. 您不会将任何内容打印到response.
  2. You're,因为您希望和同步运行。

要解决问题1,您需要使用<%= %>,而不是将它们分配给<% %>中的字符串,然后完全忽略它。

代码语言:javascript
复制
$("#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代码中结束,如下所示(在浏览器中右键单击页面,自己查看源代码):

代码语言:javascript
复制
$("#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代码中:

代码语言:javascript
复制
$("#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代码结束:

代码语言:javascript
复制
$("#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>"
);
票数 0
EN

Stack Overflow用户

发布于 2011-10-13 00:21:53

<% String s = rs.getString(1).toString(); %>不输出任何内容。它只是一个script-let (代码块)。

要将某些内容输出到页面,您需要执行以下操作

代码语言:javascript
复制
<%= rs.getString(1).toString() %>

注意等号("=")。这会将该块转换为out.print(...)语句。

顺便说一句,我希望这只是你在问题中粘贴的测试代码。JSP中那么多的逻辑(特别是打开数据库连接)并不是很好……

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7738631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档