我有一个名为Track.html的HTML文件,它包含一个文本框。我们输入一个10位数字,然后单击按钮进行搜索。验证后,将调用AJAX函数,该函数将数字发送到jsp文件,并在数据库中搜索输入数字,如果在数据库中找到了该值,则输出应显示在同一HTML页面上的另一个文本框中(而不更改网址)。但是问题是它不起作用。
要检查我的jsp文件是否正常运行,我执行了以下操作: 我使用的是表单标签,因此在其动作属性中我提到了jsp文件,而不是调用AJAX函数,因此在搜索输入数字后,它将重定向到新页面并显示从数据库中获取的相应内容,但是我想要内容显示在同一页面上。
这是HTML部分:
<fieldset>
<form method="post">
<table cellpadding="10" cellspacing="10">
<tr>
<td><strong>Consignment Number</strong></td>
<td><input type="text" id="cons" name="cons" autofocus="true"
placeholder="Enter the 10 digit Consignment Number"
</td>
</tr>
<tr>
<td align="center"><button onclick="search()
<span>Search</span></button></td>
<td><span><input type="reset"></span></td>
</tr>
</table>
</form>
</fieldset>
<br>
<fieldset>
<table cellpadding="10" cellspacing="10">
<tr>
<td><strong>Your Package is at:</strong></td>
<td><input type="text" id="result"></td>
</tr>
</table>
</fieldset>
这是AJAX函数:
function search() {
if (validate()) {
var cnum = document.getElementById('cons').value;
var obj1 = new XMLHttpRequest();
obj1.onreadystatechange = function () {
if ((obj1.readyState == 4) && (obj1.status == 200)) {
document.getElementById("result").value = obj1.responseText;
}
}
obj1.open("get", "Trace.jsp?cn=" + cnum, true);
obj1.send();
}
这是jsp代码:
<%@page import="java.sql.*"%>
<%
try
{
int conum=Integer.valueOf(request.getParameter("cn"));
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/postal_info","root","*******");
Statement st=con.createStatement();
ResultSet rs=st.executeQuery("select * from trace;");
while(rs.next())
{
int c=rs.getInt(3);
if(conum==c)
{
out.println(rs.getString(6));
}
}
}
catch(Exception e)
{
out.println(e);
}
%>