使用AJAX和JSP的动态表



我有一个表tbIndividual,说有4列:ID, I_Name, FNameLName的个人。

现在我想搜索个人在我的web应用程序在这样一种方式,当我按下' a '个人的名字以' a '开头的所有出现在我的页面下面的表格形式,如果我按下一个按钮说'B',那么只有符合条件的个人留在页面上,所有其他的都消失了。

我正在学习JSP和AJAX。

但是没有得到想要的输出。请帮忙

下面是我的代码:
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>SEARCH DATABASE</title>
    <script>
    function showuser(str)
    {
        var xreq;
        if(str=="")
        {
            document.getElementById("showtext").innerHTML="";
            return;
        }
        if(window.XMLHttpRequest)
        {
            xreq=new XMLHttpRequest();
        }
        else
        {
            xreq=new ActiveXObject("Microsoft.XMLHTTP");
        }
        xreq.onreadystatechange=function ()
        {
            if((xreq.readyState==4) && (xreq.status==200))
            {
                document.getElementById("showtext").innerHTML=xreq.responseText;
            }
        }
        xreq.open("get","getdata.jsp?q="+str,"true");
        xreq.send();
     }
</script>
</head>
<body>
<form>
<input type="text" id="txt1" onkeyup="showuser(this.value)">  
</form>
<br />
<div id="showtext">THE DATA IS</div>
</body>
</html>

建立连接并在表中打印结果的getuser.jsp如下。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>MY DATA</title>
</head>
<body>
<%!Connection con; %>
<%!PreparedStatement s; %>
<%!ResultSet rs; %>
<% 
String name=request.getParameter("txt1");
out.println(name);
try{
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    con=DriverManager.getConnection("jdbc:odbc:SharedCryptography", "fyp", "fyp");
    String sql="select * from tbIndividual where I_NAME like ?";    
    s = con.prepareStatement(sql);
    s.setString(1, name + "%");
    rs=s.executeQuery();
}
catch(Exception e){ 
    e.printStackTrace(); 
}
%>
<div id="dtl_table"><table border='3' cellpadding='5' cellspacing='2' width="400px">
<tr bgcolor="66FF00">
<th>ID</th>
<th>NAME</th>
<th>FIRSTNAME</th>
<th>LASTNAME</th>
</tr>
<tr>
<% while(rs.next())
{ %>
    <td><%=rs.getString(1)%></td>
    <td><%=rs.getString(2)%></td>
    <td><%=rs.getString(3)%></td>
    <td><%=rs.getString(4)%></td>
<% } %>
</tr>
</table></div>
</body>
</html>

请帮助。我没有得到任何错误,但也没有得到结果。

编辑:individualdetails.jsp

<body>
<%!Connection con; %>
<%!PreparedStatement s; %>
<%!ResultSet rs; %>
<% String idperson=request.getParameter("personid");
 try{
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
     con=DriverManager.getConnection("jdbc:odbc:SharedCryptography", "fyp", "fyp");
     String sql="select * from tbIndividual where I_ID=?";    
     s = con.prepareStatement(sql);
     s.setString(1,idperson);
     rs=s.executeQuery();
}
catch(Exception e){ 
    e.printStackTrace(); 
}
</body>

看,根据我的知识查询你写的是完美的,甚至它保护sql攻击。

在JSP页面中使用了

<input type="text" id="txt1" onkeyup="showuser(this.value)"> 

,因为request.getParameter()使用属性名而不是id。所以在服务器端,它的值是null,查询是针对null%触发的,所以它可能不会来。

所以将上面的代码替换为下面的

<input type="text" id="txt1" name="tx1" onkeyup="showuser(this.value)"/>现在试试吧

相关内容

  • 没有找到相关文章

最新更新