使用AJAX和JSP的动态表

时间:2014-03-27 17:34:57

标签: ajax jsp jdbc-odbc

我有一张表tbIndividual表示有4列:IDI_NameFNameLName个人。

现在我想在我的网络应用程序中搜索个人,就像我按下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>

1 个答案:

答案 0 :(得分:0)

根据我的知识查询你所写的内容是完美的,甚至可以防止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)"/> 并立即尝试 让我知道更新。