【问题标题】:Retrieve data from database based on input form根据输入表单从数据库中检索数据
【发布时间】:2016-12-22 08:18:51
【问题描述】:

我试图从数据库中检索数据。我使用 jdbc 连接到数据库。我有一个文本字段和一个提交按钮。当我在文本字段中键入文本并单击提交时,它显示一个空白页面,并且控制台中没有错误。 我没有从数据库中获取数据。我的数据库名称是新的,表名称是列表。有什么解决办法吗?

             <!DOCTYPE html>
                  <html>

                  <head>
                    <title>D3</title>
                    <script>
                      function getData() {
                        {
                          xmlHttp = GetXmlHttpObject();
                          var id = document.getElementById("input").value;
                          var url = "main.jsp"; 
                          url = url + "?input=" + id;
                          xmlHttp.onreadystatechange = stateChanged;
                          xmlHttp.open("GET", url, true);
                        }
                        xmlHttp.send(null);


                        function stateChanged() {
                          if (xmlHttp.readyState === 4 || 
                      xmlHttp.readyState === "complete") {
                            var showdata = xmlHttp.responseText;
                            document.getElementById("input").value
                         = showdata;

                          }
                        }
                      }
                    </script>
                  </head>

                  <body>
                    <div id="type">
                      <form>
                        <table>
                          <tr>
                            <td>
                              <input type="text" name="input">
                            </td>
                          </tr>
                          <tr>
                            <td>
                              <input type="submit" 
                name="submit" onclick="getdata();" </td>
                          </tr>
                        </table>
                      </form>
                    </div>
                  </body>

                  </html>

下面是main.jsp文件,用于根据输入表单从数据库中获取数据

main.jsp

          <%@page import="java.sql.ResultSet"%>
        <%@page import="java.sql.*"%>
        <%@page import="java.sql.DriverManager"%>
        <%@page import="java.sql.Connection"%>
        <%@page import="java.beans.Statement"%>
        <%
            String ch = request.getParameter("type").toString();
            System.out.println(ch);
            String data ="";
            try{
                Class.forName("com.mysql.jdbc.Driver");
                Connection con=DriverManager.getConnection
           ("jdbc:mysql://localhost:3306/new","root","admin321"); 
               PreparedStatement st=con.prepareStatement
          ("select * from list where input in name=?");



              ResultSet rs=st.executeQuery(); 


                while(rs.next())
                {
                    data = rs.getString("name") + ": " +
              rs.getString("child name");
                }
                out.println(data);
                System.out.println(data);
            }
            catch(Exception e) {
                System.out.println(e);
            }
        %>

更新脚本:

           function getData(){ 
              {
            xmlHttp=GetXmlHttpObject();
             var id=document.getElementById("input").value;
         var url="main.jsp";
     //  java.net.URLEncoder.encode(url, "UTF-8");
      //  url=URLEncoder.encode(url,"UTF-8");
         url=url+"?input="+id;


       xmlHttp.onreadystatechange=stateChanged ;
              xmlHttp.open("GET",url,true);
           }
         xmlHttp.send(null);


        function stateChanged(){ 
     if(xmlHttp.readyState===4 || xmlHttp.readyState==="complete"){ 
  var showdata = xmlHttp.responseText; 
   document.getElementById("input").value=showdata;

      }
     } 
      return false;
       }

【问题讨论】:

    标签: html database jdbc


    【解决方案1】:

    表单正在执行操作,即使您没有指定它。您应该阻止默认事件(获取新页面)发生,或者指定您要 POST 数据而不是 GET。

    我不确定这是否是实际答案,但这有可能解决您的问题。使用客户端 javascript 来防止表单操作发生。一个使用 jQuery 的例子:

    ($(document).ready(function(){
    $(".your-form").submit(function(e){
       // e stands for the event generated by the submit
       e.preventDefault();
       // the rest of your logic
       });
      });
    )();
    

    【讨论】:

    • 对不起,还是空白
    【解决方案2】:

    我可以发现您的代码存在以下问题。

    • 我在 jsp 代码中找不到您在准备好的语句之后为“name”属性设置值的任何地方。

    • String ch = request.getParameter("type").toString(); 获取type 参数的值。但是在url = url + "?input=" + id; 行中,您正在设置input 参数。

    • getdata() 中没有return false 以防止表单提交。将return false; 添加到getdata() 函数的末尾 尝试解决上述问题并检查您是否仍然没有获得所需的输出。

    【讨论】:

    • 页面还是空白
    • 也为准备好的语句设置参数。让我知道它是否有效。
    • st.setString(1, ch);
    • 它导致空白页
    • 提交按钮将我带到此网址localhost:8080/WebApplication6/… 问题出在哪里?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-16
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    • 2017-04-02
    • 2017-01-15
    • 1970-01-01
    相关资源
    最近更新 更多