У меня есть HTML-файл с именем Track.html, он содержит текстовое поле. Мы вводим 10-значный номер и нажимаем кнопку для поиска. После проверки вызывается функция AJAX, которая отправляет номер в файл jsp, и в базе данных выполняется поиск входного номера. Если значение найдено в базе данных, выходные данные должны отображаться в другом текстовом поле на той же HTML-странице (без изменения URL). Но проблема в том, что он не работает.
Чтобы проверить, правильно ли работает мой 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);
}
%>