我有一张表tbIndividual
表示有4列:ID
,I_Name
,FName
和LName
个人。
现在我想在我的网络应用程序中搜索个人,就像我按下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>
答案 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)"/>
并立即尝试
让我知道更新。